part02_編譯android平臺(tái)使用的FFmpeg動(dòng)態(tài)庫(kù)

一、ffmpeg源碼目錄

一、安裝ndk

    1.下載ndk
    wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
    2.安裝unzip
    apt-get install unzip
    3.解壓到當(dāng)前目錄
    unzip android-ndk-r14b-linux-x86_64.zip
      解壓到指定目錄:
    unzip android-ndk-r14b-linux-x86_64.zip -d /ndk_build/
    4.打開(kāi)bashrc
    vim ~/.bashrc
    5.在bashrc末尾插入環(huán)境變量配置:
        export NDKROOT=/ndk_build/android-ndk-r14b
        export PATH=$NDKROOT:$PATH
    6.按ESC再輸入 :wq 保存退出
    7.配置生效
    source ~/.bashrc

二、ffmpeg編譯

  • 1.下載ffmpeg2.6.9(這個(gè)版本比較穩(wěn)定)

    wget http://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz

  • 2.解壓

    tar -xzf ffmpeg-2.6.9.tar.gz

  • 3.進(jìn)入ffmpeg-2.6.9目錄創(chuàng)建build_android.sh腳本并打開(kāi)

    touch build_android.sh

    vim build_androuid.sh

  • 4.編輯腳本(腳本前面幾行的路徑一定要核對(duì)準(zhǔn)確)

      #!/bin/bash
      make clean
      #指向NDK所在路徑
      export NDK=/ndk_build/android-ndk-r14b
      #最低兼容版本9路徑,9以下有很多不同建議兼容到9
      export SYSROOT=$NDK/platforms/android-9/arch-arm/
      #指定編譯器路徑,即ndk中的GCC
      export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
      #指定編譯arm平臺(tái)下的cpu
      export CPU=arm
      #編譯后文件存放路徑(build_androuid.sh所在當(dāng)前目錄/android/arm)
      export PREFIX=$(pwd)/android/$CPU
      export ADDI_CFLAGS="-marm"
    
      #--------------------------------------
      #執(zhí)行ffmpeg中的configure命令
      #target-os=linux在linux環(huán)境下編譯
      #開(kāi)啟動(dòng)態(tài)庫(kù)--enable-shared \
      #禁止靜態(tài)庫(kù)--disable-static \
      #清除yasm信息--disable-yasm \
      #--------------------------------------
    
      ./configure --target-os=linux \
      --prefix=$PREFIX --arch=arm \
      --disable-doc \
      --enable-shared \
      --disable-static \
      --disable-yasm \
      --disable-symver \
      --enable-gpl \
      --disable-ffmpeg \
      --disable-ffplay \
      --disable-ffprobe \
      --disable-ffserver \
      --disable-doc \
      --disable-symver \
      --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
      --enable-cross-compile \
      --sysroot=$SYSROOT \
      --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
      --extra-ldflags="$ADDI_LDFLAGS" \
      $ADDITIONAL_CONFIGURE_FLAG
      make clean
      make
      make install
    
  • 5.修改生成文件的后綴名格式:將ffmpeg目錄中configure配置文件傳輸?shù)阶约弘娔X上將第2779-2782行替換成如下格式再替換linux下的configure文件(因?yàn)閍ndroid系統(tǒng)中必須以.so結(jié)尾才能運(yùn)行):

      SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
      LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
      SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
      SLIB_INSTALL_LINKS='$(SLIBNAME)'
    
  • 6.給整個(gè)ffmpeg目錄添加可執(zhí)行權(quán)限

    chmod 777 -R ffmpeg-2.6.9

  • 7.執(zhí)行編譯腳本

    ./build_androuid.sh

  • 8.編譯大概需要10-20分鐘編譯完成后目錄如下:


紅色標(biāo)記的8個(gè)so就是我們需要在android平臺(tái)下使用的,不過(guò)這樣編譯出來(lái)的是整套未裁剪的so庫(kù),8個(gè)庫(kù)總共有12.7M。集成到項(xiàng)目中大多時(shí)候我們會(huì)選擇裁剪ffmpeg。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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