基於android的ffmpeg的編譯
阿新 • • 發佈:2021-10-16
我首先百度了一下 然後參考 https://www.jianshu.com/p/feab970fd74c
#你自己的NDK路徑。 export ANDROID_NDK=/home/cc/data/cc/Android/Sdk/ndk/23.0.7344513 # 設定你的android平臺編譯器的版本 # export SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm/ export SYSROOT=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot #編譯使用的toolchain export TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64 export CPU=aarch64 # export CPU=armv8-a export ANDROID_NATIVE_API_LEVEL=android21 # 這個是輸出的路徑 export PREFIX=$(pwd)/android/$CPU # export ADDI_CFLAGS="-marm" export ADDI_CFLAGS="" ./configure --target-os=linux \ --prefix=$PREFIX --arch=$CPU \ --disable-doc \ --enable-shared \ --disable-static \ --disable-x86asm \ --disable-symver \ --enable-gpl \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/$CPU-linux-$ANDROID_NATIVE_API_LEVEL- \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" make clean make make install
遇到了錯誤
libavdevice/v4l2.c:135:9: error: assigning to 'int (*)(int, unsigned long, ...)' from incompatible type '<overloaded function type>'
SET_WRAPPERS();
參考 https://github.com/tanersener/mobile-ffmpeg/issues/48
#你自己的NDK路徑。 export ANDROID_NDK=/home/cc/data/cc/Android/Sdk/ndk/23.0.7344513 # 設定你的android平臺編譯器的版本 # export SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm/ export SYSROOT=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot #編譯使用的toolchain export TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64 export CPU=aarch64 # export CPU=armv8-a export ANDROID_NATIVE_API_LEVEL=android21 # 這個是輸出的路徑 export PREFIX=$(pwd)/android/$CPU # export ADDI_CFLAGS="-marm" export ADDI_CFLAGS="-DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD" ./configure --target-os=linux \ --prefix=$PREFIX --arch=$CPU \ --disable-doc \ --enable-shared \ --disable-static \ --disable-x86asm \ --disable-symver \ --enable-gpl \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/$CPU-linux-$ANDROID_NATIVE_API_LEVEL- \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ --disable-indev=v4l2
錯誤
libavcodec/hevc_mvs.c:368:23: error: use of undeclared identifier 'y0000000'
參考 https://www.jianshu.com/p/484db5ec733f
解決就是替換 libavcodec/aaccoder.c 中的 B0 成 其他名字(我改成了 aaccoder_B0)