1)ffmpeg 版本
< 3.0 :小於3.0的ffmpeg版本較老不建議再進行編譯使用
3.0~4.0:3.0到4.0之間的版本是現在主要使用的版本,其中將AVSteam中的編解碼器做了一些調整
>=4.0 :4.0是較新版本對編解碼器的註冊做了優化。
2)NDK版本
ndk10:一些框架常用的版本。
ndk17:添加了對clang的的支持
ndk19:刪除了默認使用的gcc編譯工具,默認使用clang作爲編譯器
3)gcc編譯和clang編譯配置的區別
變量:
$NDK_PATH:NDK 根目錄
$RUN_PLATFORM =linux-x86_64 命令運行環境
$ANDROID_SDK = 21 目標Android版本
--sysroot:
使用gcc編譯時的目錄是$NDK_PATH/platforms/android-$ANDROID_SDK/arch-arm
使用clang編譯時的目錄是$NDK_PATH/toolchains/llvm/prebuilt/$RUN_PLATFORM/sysroot
--cross-prefix:
使用gcc編譯時$NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/$RUN_PLATFORM/bin/arm-linux-androideabi-
使用clang編譯時$NDK_PATH/toolchains/llvm/prebuilt/$RUN_PLATFORM/bin/arm-linux-androideabi-
--cc:
使用gcc編譯時$NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/$RUN_PLATFORM/bin/arm-linux-androideabi-gcc
使用clang編譯時$NDK_PATH/toolchains/llvm/prebuilt/$RUN_PLATFORM/bin/armv7a-linux-androideabi$ANDROID_SDK-clang
--cxx:
使用gcc編譯時$NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/$RUN_PLATFORM/bin/arm-linux-androideabi-g++
使用clang編譯時$NDK_PATH/toolchains/llvm/prebuilt/$RUN_PLATFORM/bin/armv7a-linux-androideabi$ANDROID_SDK-clang++
4)ffmpeg和ndk版本選型
1、由於現在Android Studio默認的NDK已經是20+所以在編譯ffmpeg時需要注意,使用ndk19以上版本的NDK都是使用的clang編譯,所以編譯ffmpeg時建議使用ffmpeg4.0以上的版本,在ffmpeg4.0以下的版本使用clang會提示一些彙編指令集代碼錯誤,如下圖。