Android 編譯FFmpeg 添加硬編碼? 和https
碼字不易各吨,轉(zhuǎn)載請注明出處央星!
我們編譯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)目中會發(fā)出來? 目前可以參考移植部分就可以了