FFmpeg Android交叉編譯註意事項

 

        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會提示一些彙編指令集代碼錯誤,如下圖。

         

              

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章