Android集成FFmpeg

目錄

編譯動(dòng)態(tài)鏈接庫

如何編譯大家可以根據(jù)這篇文章的步驟來實(shí)現(xiàn),作者寫的非常的詳細(xì):編譯FFmpeg for Android
我使用的是基于Ubuntu 18.04的系統(tǒng)編譯的中間沒有什么卡頓

集成到項(xiàng)目

1.拷貝動(dòng)態(tài)鏈接庫到項(xiàng)目
這里我放在libs目錄下,注意這里拷貝的是那些帶數(shù)字的so庫



2.拷貝頭文件到項(xiàng)目
將編譯生成的include文件夾拷貝到cpp文件目錄下


3.配置CMakeLists.txt文件
配置如下

cmake_minimum_required(VERSION 3.10.2)
project("ffmpegdemo")
#導(dǎo)入頭文件(可以讓項(xiàng)目找到頭文件,這樣才能調(diào)用函數(shù))
include_directories("${CMAKE_SOURCE_DIR}/include")
#配置動(dòng)態(tài)鏈接庫所在的目錄
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}../../../../libs/${ANDROID_ABI}")
add_library( # Sets the name of the library.
             native-lib
             SHARED
             native-lib.cpp )

find_library( # Sets the name of the path variable.
              log-lib
              log )
target_link_libraries( # Specifies the target library.
                       native-lib
                        #下面這些是鏈接的庫名稱(其實(shí)就是so文件去掉前面的lib和后面的.so)
                        avcodec-58
                        avdevice-58
                        avfilter-7
                        avformat-58
                        avutil-56
                        postproc-55
                        swresample-3
                        swscale-5
                       ${log-lib} )

4.配置app的build.gradle文件

externalNativeBuild {
            //配置自己寫的代碼生成的架構(gòu)類型
            cmake {
                cppFlags ''
                abiFilters 'armeabi-v7a'
            }
        }
        ndk{
            //配置第三方庫的架構(gòu)類型,由于我們這里只有armeabi-v7a的因此只配置了它
            abiFilters 'armeabi-v7a'
        }
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

5.顯示FFmpeg版本號(hào)
為了查看是否配置成功,我們將原來的native-lib.cpp中返回Hello from C++的代碼改為返回FFmpeg的版本號(hào)

#include <jni.h>
#include <string>
//混合C代碼編譯
extern "C"{
#include "libavcodec/avcodec.h"
}
extern "C" JNIEXPORT jstring JNICALL
Java_com_itfitness_ffmpegdemo_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    return env->NewStringUTF(av_version_info());
}

效果如下就說明配置成功了


案例源碼

https://gitee.com/itfitness/ffmpeg-build

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容