【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )
文章目錄
- 一、FFMPEG 源碼下載 解壓
- 二、交叉編譯工具
- 三、configure 腳本及幫助命令
- 四、配置 configure 腳本
- 五、輸出目錄配置
- 六、函數庫配置
- 七、程序配置選項
- 八、組件配置選項
- 九、編碼配置
- 十、交叉編譯配置 ( 重點 )
- 十一、交叉編譯配置 Shell 腳本 ( 重點 )
一、FFMPEG 源碼下載 解壓
1 . FFMPEG 下載 :
① FFMPEG 源碼下載地址 : http://ffmpeg.org/download.html#releases
② 本博客使用的源碼下載地址 : https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
( 也可以直接從博客資源中下載 )
2 . 解壓源碼 : 使用 tar xvf ffmpeg-4.0.2.tar.bz2 命令 , 解壓源碼 ;
root@octopus:~# cd FFMPEG/ root@octopus:~/FFMPEG# ls ffmpeg-4.0.2.tar.bz2 root@octopus:~/FFMPEG# tar xvf ffmpeg-4.0.2.tar.bz2 ffmpeg-4.0.2/ ...解壓后的內容 :
root@octopus:~/FFMPEG/ffmpeg-4.0.2# ls Changelog COPYING.LGPLv3 libavdevice libswscale RELEASE_NOTES compat CREDITS libavfilter LICENSE.md tests configure doc libavformat MAINTAINERS tools CONTRIBUTING.md ffbuild libavresample Makefile VERSION COPYING.GPLv2 fftools libavutil presets COPYING.GPLv3 INSTALL.md libpostproc README.md COPYING.LGPLv2.1 libavcodec libswresample RELEASE二、交叉編譯工具
1 . NDK 下載 : 使用 NDK 17 版本 ;
① NDK 地址列表 : https://developer.android.google.cn/ndk/downloads/older_releases.html
② 直接下載地址 : https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip?hl=zh_cn
2 . Ubuntu Linux 操作系統下載 : 使用 18.04.4 版本的系統 ;
Ubuntu 下載地址 : http://releases.ubuntu.com
三、configure 腳本及幫助命令
1 . Shell 腳本 : 由第一行 Shell 解釋器聲明 #!/bin/sh 代碼 , 可以看出 configure 是 Shell 腳本 ;
2 . configure 腳本作用 : 該腳本用于生成 make 工具的構建腳本 Makefile 文件 ;
3 . configure 腳本執行 : 該腳本需要進行配置才能執行 , 如果直接執行 , 肯定會出錯 ;
4 . configure 幫助命令 :
① 腳本復雜 : C/C++ 開源庫都會提供一個 configure 腳本 , 該腳本的配置非常復雜 , 但一般都提供一個幫助選項 ;
② 幫助信息 : 執行 ./configure --help 命令 , 即可查看幫助信息 , 建議先將幫助信息熟悉一遍再進行編譯 ;
博客資源中有一份完整的 configure 幫助信息內容 , 我對使用到的文檔進行了注釋 , 僅做參考
四、配置 configure 腳本
1 . FFMPEG 編譯流程 :
① 配置 : 使用 configure 腳本進行相關參數配置 ; ( 下面會詳細講解 需要配置的 5 個類型的參數 )
② 編譯 : 配置完畢后 , 直接執行 make 命令 , 開始進行編譯 ;
2 . 配置的內容 :
① 輸出配置 : 配置生成的相關文件輸出路徑 ;
② 函數庫配置 : 配置靜態庫 , 動態庫 , 函數庫優化等相關參數 ;
③ 命令行程序配置 : 配置是否生成命令行程序 , FFMPEG 自帶 3 個命令行程序 ;
④ 編譯組件配置 : FFMPEG 有 22 個可選的獨立組件配置 , 可以選擇性編譯或不編譯某些組件 ;
⑤ 編碼解碼配置 : 配置 FFMPEG 編解碼相關功能 ;
⑥ 交叉編譯配置 ( 重點 ) : 配置交叉編譯工具鏈 , 頭文件與庫文件查找路徑參數 , GCC 編譯器參數 , CPU 指令集架構等參數 ;
下面介紹的所有配置命令都是在 FFMPEG 源碼根目錄層級中執行 ;
五、輸出目錄配置
1 . 生成文件的輸出目錄 : FFMPEG 編譯后需要生成一系列的函數庫 , 及頭文件等 ; 需要為這些生成的文件指定輸出目錄 ;
2 . 指定生成的文件輸出位置 :
① 定義變量 : 使用 PREFIX=./android/armeabi-v7a 命令 , 定義輸出目錄根目錄變量 ;
② 路徑配置 : 使用 ./configure --prefix=PREFIX 命令 , 指定輸出文件的根目錄為 ./android/armeabi-v7a ;
# 將輸出目錄存儲到 PREFIX 變量中 PREFIX=./android/armeabi-v7a# 執行 configure 腳本配置輸出文件的根目錄 ./configure --prefix=$PREFIX3 . 自動生成其它目錄 : 指定了 --prefix 選項 , 那么其它生成 bin 可執行文件目錄 , lib 函數庫目錄 等類型的文件輸出目錄會在 --prefix 配置的目錄基礎上生成 ;
① 根目錄 : 指定了 --prefix 目錄為 ./android/armeabi-v7a ;
② 可執行文件目錄 : 自動生成的可執行文件輸出目錄為 PREFIX/bin , 即 ./android/armeabi-v7a/bin ;
③ 函數庫目錄 : 自動生成的函數庫數據目錄為 PREFIX/lib , 即 ./android/armeabi-v7a/lib ;
其它的標準選項配置 ( Standard options ) 請仔細閱讀下面的 configure 幫助文檔內容 ;
Standard options: # 標準選項--logfile=FILE log tests and output to FILE [ffbuild/config.log]--disable-logging do not log configure debug information--fatal-warnings fail if any configure warning is generated# 生成的文件輸出目錄 , 這里只需要指定一個 PREFIX 即可 # 指定好 PREFIX 后面的一系列目錄就會自動設置好 ;--prefix=PREFIX install in PREFIX [/usr/local]# 生成的可執行文件輸出目錄 , 指定好 PREFIX 后面的一系列目錄就會自動設置好 --bindir=DIR install binaries in DIR [PREFIX/bin] --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]--docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg]--libdir=DIR install libs in DIR [PREFIX/lib]--shlibdir=DIR install shared libs in DIR [LIBDIR]--incdir=DIR install includes in DIR [PREFIX/include]--mandir=DIR install man page in DIR [PREFIX/share/man]--pkgconfigdir=DIR install pkg-config files in DIR [LIBDIR/pkgconfig]--enable-rpath use rpath to allow installing libraries in pathsnot part of the dynamic linker search pathuse rpath when linking programs (USE WITH CARE)--install-name-dir=DIR Darwin directory name for installed targetsLicensing options:--enable-gpl allow use of GPL code, the resulting libsand binaries will be under GPL [no]--enable-version3 upgrade (L)GPL to version 3 [no]--enable-nonfree allow use of nonfree code, the resulting libsand binaries will be unredistributable [no]六、函數庫配置
1 . 函數庫配置 : FFMPEG 編譯時 , 可以選擇編譯靜態庫或動態庫 , 及設置編譯函數庫的行為 ;
2 . 默認編譯的函數庫 : FFMPEG 默認編譯靜態庫 , 此處也推薦在 Android 中使用 FFMPEG 靜態庫開發音視頻功能 , 保持默認狀態即可 ;
3 . 優化函數庫 :
① 設置后效果 : FFMPEG 編譯時可以選擇優化函數庫大小 , 讓編譯出來的函數庫盡可能小 , 但相應的編譯速度會降低很多 ;
② 設置的要性 : 由于是在 Android 中進行開發 , 為了使打包后的 APK 文件盡可能小 , 這里我們需要開啟該選項 ;
③ 設置命令 : 調用 ./configure --enable-small 命令 , 啟用優化函數庫大小的功能 ;
# 啟用函數庫大小優化 ./configure --enable-small其它的配置選項 ( Configuration ) 請仔細閱讀下面的 configure 幫助文檔內容 ;
Configuration options: #配置選項# 是否關閉靜態庫編譯 , 默認值是 no 會編譯靜態庫# 如果設置該選項 , 編譯時不會編譯靜態庫 ; # 這里使用默認值 , 即要編譯出靜態庫在 Android 中使用 ; --disable-static do not build static libraries [no]# 是否編譯動態庫 , 默認 no 即不會編譯動態庫 ; 這里也使用默認值--enable-shared build shared libraries [no] # 優化函數庫大小 , 但是編譯速度很慢 ; # 如果設置該選項 , 因為 Android 中的函數庫越小越好 --enable-small optimize for size instead of speed --disable-runtime-cpudetect disable detecting CPU capabilities at runtime (smaller binary)--enable-gray enable full grayscale support (slower color)--disable-swscale-alpha disable alpha channel support in swscale--disable-all disable building components, libraries and programs--disable-autodetect disable automatically detected external libraries [no]七、程序配置選項
程序配置選項 :
① FFMPEG 命令行程序 : FFMPEG 提供了一些可執行的命令行程序 , 如 ffmpeg.exe , ffplay.exe , ffprobe.exe 等程序 ;
② 使用情況 : 在 Android 開發中只需要 FFMPEG 的函數庫 , 不需要這些程序 , 建議關閉命令行程序編譯選項 ;
③ 配置命令 : 調用 ./configure --disable-programs 命令 , 關閉編譯命令行程序的功能 ;
# 關閉編譯命令行程序 ./configure --disable-programs其它的配置選項 ( Configuration ) 請仔細閱讀下面的 configure 幫助文檔內容 ;
Program options: #程序選項#關閉命令行程序編譯 : FFMPEG 提供了一些可執行的命令行程序 # 如 ffmpeg.exe , ffplay.exe , ffprobe.exe 等程序 ; # 但是我們只需要 FFMPEG 的函數庫 , 不需要這些程序# 建議關閉編譯命令行程序選項 ; --disable-programs do not build command line programs# 下面是分別設置 3 個命令行程序是否進行編譯--disable-ffmpeg disable ffmpeg build--disable-ffplay disable ffplay build--disable-ffprobe disable ffprobe build八、組件配置選項
1 . 組件配置選項 :
默認狀態 : FFMPEG 組件選項 , 默認都是打開的 , 如果需要關閉某一個需要單獨配置 ;
2 . FFMPEG 常用組件 :
① avdevice 組件 : 操作攝像頭等視頻設備 , Android 中是不支持該操作 , 需要手動關閉 ;
② avcodec 組件 : 聲音 / 圖像編解碼組件 ;
③ avformat 組件 : 音視頻封裝格式生成或解析 ;
④ swresample 組件 : 音頻重采樣 , 修改音頻參數 ;
⑤ swscale 組件 : 視頻場景比例縮放 , 色彩映射轉換 ;
⑥ postproc 組件 : 后期效果處理 , 這里不需要 , 需要手動關閉 ;
⑦ avfilter 組件 : 過濾器 , 添加字幕水印 ;
3 . 關閉 avdevice 配置命令 : 調用 ./configure --disable-avdevice 命令 , 關閉 avdevice 模塊編譯 ;
# 關閉編譯命令行程序 ./configure --disable-avdevice其它的組件配置選項 ( Configuration ) 請仔細閱讀下面的 configure 幫助文檔內容 ;
Component options: # FFMPEG 組件選項 , 默認都是打開的 , 如果需要關閉某一個需要單獨配置# FFMPEG 由以下組件構成 , 可以定制是否編譯這些組件 ;# 操作攝像頭等視頻設備 , Android 中是不支持該操作 , 需要手動關閉 ;--disable-avdevice disable libavdevice build# 聲音 / 圖像編解碼--disable-avcodec disable libavcodec build# 音視頻封裝格式生成或解析--disable-avformat disable libavformat build# 音頻重采樣 , 修改音頻參數--disable-swresample disable libswresample build# 視頻場景比例縮放 , 色彩映射轉換--disable-swscale disable libswscale build# 后期效果處理 , 這里不需要 , 需要手動關閉 ;--disable-postproc disable libpostproc build# 過濾器 , 添加字幕水印--disable-avfilter disable libavfilter build--enable-avresample enable libavresample build (deprecated) [no]--disable-pthreads disable pthreads [autodetect]--disable-w32threads disable Win32 threads [autodetect]--disable-os2threads disable OS/2 threads [autodetect]--disable-network disable network support [no]--disable-dct disable DCT code--disable-dwt disable DWT code--disable-error-resilience disable error resilience code--disable-lsp disable LSP code--disable-lzo disable LZO decoder code--disable-mdct disable MDCT code--disable-rdft disable RDFT code--disable-fft disable FFT code--disable-faan disable floating point AAN (I)DCT code--disable-pixelutils disable pixel utils in libavutil九、編碼配置
1 . 提供的編碼配置 :
① 編碼器 : 關閉指定編碼器 , 關閉所有編碼器 , 打開指定編碼器 ;
# 關閉指定編碼--disable-encoder=NAME disable encoder NAME# 打開指定編碼--enable-encoder=NAME enable encoder NAME# 關閉所有編碼--disable-encoders disable all encoders② 解碼器 : 關閉指定解碼器 , 關閉所有解碼器 , 打開指定解碼器 ;
# 關閉指定解碼--disable-decoder=NAME disable decoder NAME# 打開指定解碼--enable-decoder=NAME enable decoder NAME# 關閉所有解碼--disable-decoders disable all decoders2 . 關閉編碼配置命令 : 調用 ./configure --disable-encoders 命令 , 關閉編碼器模塊編譯 ;
# 關閉編譯編碼器 ./configure --disable-encoders3 . 關閉混合封裝配置命令 : 調用 ./configure --disable-muxers 命令 , 關閉混合封裝模塊編譯 ;
# 關閉混合封裝 ./configure --disable-muxers2 . 關閉視頻濾鏡配置命令 : 調用 ./configure --disable-filters 命令 , 關閉視頻濾鏡模塊編譯 ;
# 關閉視頻濾鏡 ./configure --disable-filters其它的單個組件配置選項 ( Configuration ) 請仔細閱讀下面的 configure 幫助文檔內容 ;
Individual component options: # 單個組件配置--disable-everything disable all components listed below# 關閉指定編碼--disable-encoder=NAME disable encoder NAME# 打開指定編碼--enable-encoder=NAME enable encoder NAME# 關閉所有編碼--disable-encoders disable all encoders# 關閉指定解碼--disable-decoder=NAME disable decoder NAME# 打開指定解碼--enable-decoder=NAME enable decoder NAME# 關閉所有解碼--disable-decoders disable all decoders--disable-hwaccel=NAME disable hwaccel NAME--enable-hwaccel=NAME enable hwaccel NAME--disable-hwaccels disable all hwaccels--disable-muxer=NAME disable muxer NAME--enable-muxer=NAME enable muxer NAME# 關閉混合封裝 , 混合封裝就是將音頻與視頻封裝一個視頻文件--disable-muxers disable all muxers--disable-demuxer=NAME disable demuxer NAME--enable-demuxer=NAME enable demuxer NAME--disable-demuxers disable all demuxers--enable-parser=NAME enable parser NAME--disable-parser=NAME disable parser NAME--disable-parsers disable all parsers--enable-bsf=NAME enable bitstream filter NAME--disable-bsf=NAME disable bitstream filter NAME--disable-bsfs disable all bitstream filters--enable-protocol=NAME enable protocol NAME--disable-protocol=NAME disable protocol NAME--disable-protocols disable all protocols--enable-indev=NAME enable input device NAME--disable-indev=NAME disable input device NAME--disable-indevs disable input devices--enable-outdev=NAME enable output device NAME--disable-outdev=NAME disable output device NAME--disable-outdevs disable output devices--disable-devices disable all devices--enable-filter=NAME enable filter NAME--disable-filter=NAME disable filter NAME--disable-filters disable all filters十、交叉編譯配置 ( 重點 )
1 . 開啟交叉編譯 : 調用 ./configure --enable-cross-compile 命令 , 開啟交叉編譯選項 ;
# 關閉視頻濾鏡 ./configure --enable-cross-compile2 . 設置交叉編譯工具鏈前綴 :
① 定義 NDK 根目錄變量 :
NDK_ROOT=/root/NDK/android-ndk-r17c② 定義 TOOLCHAIN 交叉編譯工具鏈目錄變量 :
TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64③ 設置交叉編譯工具鏈前綴 :
./configure --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-實際的前綴為 : /root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
3 . 配置頭文件與庫文件查找路勁 :
./configure --sysroot=$NDK_ROOT/platforms/android-21/arch-arm4 . 配置編譯器參數 :
① 先定義編譯器參數變量 :
FLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem $NDK_ROOT/sources/android/support/include -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fPIC"② 配置編譯器參數 :
./configure --extra-cflags=$FLAGS5 . 配置編譯平臺 :
./configure --arch=arm6 . 配置編譯后的應用平臺 : 編譯后的函數庫要在 Android 平臺使用 ;
./configure --target-os=android其它的編譯工具鏈配置選項 ( Configuration ) 請仔細閱讀下面的 configure 幫助文檔內容 ;
Toolchain options: # 工具鏈配置選項# 指定編譯 CPU 指令集架構 , arm--arch=ARCH select architecture []--cpu=CPU select the minimum required CPU (affectsinstruction selection, may crash on older CPUs)# 指定交叉編譯工具鏈 , 即 NDK 目錄下的交叉編譯工具目錄 , 其中有一系列的 arm-linux-androideabi-XX 工具# PREFIX 配置完整的路徑/NDK路徑/工具前綴# /root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-# 后面的 gcc , g++ , ar 等工具由腳本自己補充 , 這里我們指定 gcc 前面的前綴內容--cross-prefix=PREFIX use PREFIX for compilation tools []--progs-suffix=SUFFIX program name suffix []# 開啟交叉編譯--enable-cross-compile assume a cross-compiler is used# 頭文件與庫文件查找目錄 , 這里要指定 NDK 中 platform 中的頭文件與庫文件目錄 # 注意 : 每個 NDK 版本的頭文件與庫文件目錄不一致 , 注意靈活配置 , 如果找不到頭文件與庫文件肯定報錯 # 注意版本兼容 , 要配置最低兼容版本的 NDK 頭文件 庫文件 目錄--sysroot=PATH root of cross-build tree--sysinclude=PATH location of cross-build system headers# 指定編譯的庫運行的操作系統 , android--target-os=OS compiler targets OS []--target-exec=CMD command to run executables on target--target-path=DIR path to view of build directory on target--target-samples=DIR path to samples directory on target--tempprefix=PATH force fixed dir/prefix instead of mktemp for checks--toolchain=NAME set tool defaults according to NAME(gcc-asan, clang-asan, gcc-msan, clang-msan,gcc-tsan, clang-tsan, gcc-usan, clang-usan,valgrind-massif, valgrind-memcheck,msvc, icl, gcov, llvm-cov, hardened)--nm=NM use nm tool NM [nm -g]--ar=AR use archive tool AR [ar]--as=AS use assembler AS []--ln_s=LN_S use symbolic link tool LN_S [ln -s -f]--strip=STRIP use strip tool STRIP [strip]--windres=WINDRES use windows resource compiler WINDRES [windres]--x86asmexe=EXE use nasm-compatible assembler EXE [nasm]--cc=CC use C compiler CC [gcc]--cxx=CXX use C compiler CXX [g++]--objcc=OCC use ObjC compiler OCC [gcc]--dep-cc=DEPCC use dependency generator DEPCC [gcc]--nvcc=NVCC use Nvidia CUDA compiler NVCC [nvcc]--ld=LD use linker LD []--pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [pkg-config]--pkg-config-flags=FLAGS pass additional flags to pkgconf []--ranlib=RANLIB use ranlib RANLIB [ranlib]--doxygen=DOXYGEN use DOXYGEN to generate API doc [doxygen]--host-cc=HOSTCC use host C compiler HOSTCC--host-cflags=HCFLAGS use HCFLAGS when compiling for host--host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host--host-ld=HOSTLD use host linker HOSTLD--host-ldflags=HLDFLAGS use HLDFLAGS when linking for host--host-libs=HLIBS use libs HLIBS when linking for host--host-os=OS compiler host OS []# 傳遞給 gcc 編譯器的參數 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS []# 傳遞給 g++ 編譯器的參數--extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS []--extra-objcflags=FLAGS add FLAGS to OBJCFLAGS []--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS []--extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS []--extra-ldsoflags=ELDFLAGS add ELDFLAGS to LDSOFLAGS []--extra-libs=ELIBS add ELIBS []--extra-version=STRING version string suffix []--optflags=OPTFLAGS override optimization-related compiler flags--nvccflags=NVCCFLAGS override nvcc flags [-gencode arch=compute_30,code=sm_30 -O2]--build-suffix=SUFFIX library name suffix []--enable-pic build position-independent code--enable-thumb compile for Thumb instruction set--enable-lto use link-time optimization--env="ENV=override" override the environment variables十一、交叉編譯配置 Shell 腳本 ( 重點 )
1 . 將本博客內容匯總后 , 編寫成 Shell 腳本如下 : 在 FFMPEG 源碼根目錄下 , 創建 build_ffmpeg.sh 文件 , 內容如下 ;
#!/bin/bash# NDK 根目錄 NDK_ROOT=/root/NDK/android-ndk-r17c# TOOLCHAIN 變量指向 gcc g++ 等交叉編譯工具所在的目錄 TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64# gcc 編譯器參數 FLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem $NDK_ROOT/sources/android/support/include -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fPIC"# 編譯結果輸出路徑 PREFIX=./android/armeabi-v7a# 執行 configure 腳本生成 Makefile 構建腳本 ./configure \ --prefix=$PREFIX \ --enable-small \ --disable-programs \ --disable-avdevice \ --disable-encoders \ --disable-muxers \ --disable-filters \ --enable-cross-compile \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --sysroot=$NDK_ROOT/platforms/android-21/arch-arm \ --extra-cflags="$FLAGS" \ --arch=arm \ --target-os=android # 清除之前的編譯內容 make clean# 開啟新的 FFMPEG 編譯 make install2 . 修改 Shell 腳本權限 :
chmod +x build_ffmpeg.sh3 . 執行 Shell 腳本 :
./build_ffmpeg.sh4 . 編譯結果 :
總結
以上是生活随笔為你收集整理的【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android NDK 开发】Andr
- 下一篇: 【Android FFMPEG 开发】A