Android 編譯FFmpeg 添加硬編碼 和https碼字不易,轉(zhuǎn)載請(qǐng)注明出處! 我們編譯FFmpeg一般在Linux的系統(tǒng)上進(jìn)行編譯(當(dāng)然在WIN上也是可以的加上VM虛擬機(jī)安裝linux) FFmpeg官網(wǎng)下載,直接DownLoad即可(文檔編輯時(shí)版本 ffmpeg-4.2.2) 編譯環(huán)境Ubuntu 19.10 重點(diǎn)NDK20b 采用 CLANG 則是一個(gè)效率更高的C/C++編譯工具,并且兼容GCC,Google在很早以前就開始建議使用clang進(jìn)行編譯,并且在 ndk 17 以后,把 GCC 移除了,全面推行使用 CLANG在 ffmpeg-4.2.2 根目錄下新建 shell 腳本,命名為:build_android.sh 創(chuàng)建build_andorid.sh 并授予權(quán)限sudo chmod 777 build_android.sh 講已下代碼復(fù)制到所創(chuàng)建的文件中 #!/bin/bash # 清空上次的編譯 make clean #你自己的NDK路徑. export NDK=/home/tt/android-ndk-r20b-linux-x86_64/android-ndk-r20b TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/ API=29 function build_android { echo "Compiling FFmpeg for $CPU" ./configure \ --prefix=$PREFIX \ --enable-neon \ --enable-hwaccels \ --enable-gpl \ --enable-postproc \ --enable-shared \ --enable-jni \ --enable-mediacodec \ --enable-decoder=h264_mediacodec \ --disable-decoders \ --enable-decoder=aac \ --enable-decoder=aac_latm \ --enable-decoder=mjpeg \ --enable-decoder=png \ --enable-decoder=mpeg4_mediacodec \ --disable-static \ --disable-doc \ --enable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --enable-avdevice \ --disable-doc \ --disable-symver \ --cross-prefix=$CROSS_PREFIX \ --target-os=android \ --arch=$ARCH \ --cpu=$CPU \ --cc=$CC --cxx=$CXX --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install echo "The Compilation of FFmpeg for $CPU is completed" } #armv8-a ARCH=arm64 CPU=armv8-a CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++ SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android- PREFIX=$(pwd)/android/$CPU OPTIMIZE_CFLAGS="-march=$CPU" build_android #armv7-a ARCH=arm CPU=armv7-a CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++ SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi- PREFIX=$(pwd)/android/$CPU OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU " build_android #x86 ARCH=x86 CPU=x86 CC=$TOOLCHAIN/bin/i686-linux-android$API-clang CXX=$TOOLCHAIN/bin/i686-linux-android$API-clang++ SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android- PREFIX=$(pwd)/android/$CPU OPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32" build_android #x86_64 ARCH=x86_64 CPU=x86-64 CC=$TOOLCHAIN/bin/x86_64-linux-android$API-clang CXX=$TOOLCHAIN/bin/x86_64-linux-android$API-clang++ SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android- PREFIX=$(pwd)/android/$CPU OPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel" build_android 保存等待直接 運(yùn)行./build_android.sh 然后一步編譯成功! 后續(xù)移植到Android studio 項(xiàng)目中會(huì)發(fā)出來(lái) 目前可以參考移植部分就可以了 |
|