FFmpeg 4.2.2
NDK 20
Cmake 3.10.2
Android Studio 3.5
CPU64位
狗日的,编译个FFmpeg,爆了三个月的错,一直都解决不了。动脑的老师也总是找不到人。这里说一下,动脑现在真的不行了,一代目都走完了。现在都是一些弟弟老师讲课,没有以前的老师讲的好。感觉都是两个屏幕,对着Copy代码给我们讲。
编译之后,一直都找不到编译的链接库。然后我就各种百度啊,今天随便试了下,突然就好了。妈个逼的,就是在后面加了个 .so
target_link_libraries(
native-lib
libavformat libavcodec libavfilter libavutil libswresample libswscale
${log-lib} )
原来老师讲的是这样编译的。一直没成功。
target_link_libraries(
native-lib
libavformat.so libavcodec.so libavfilter.so libavutil.so libswresample.so libswscale.so
${log-lib} )
贴一下linux中编译的脚本sh
#!/bin/bash
# 需要配置NDK路径
NDK_ROOT=/home/ndk_study/android-ndk-r20c
TOOLCHAIN=$NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
ANDROID_API=21
# 编译之后输出的文件,也就是要libavformat等文件,放到AS中使用的。
PREFIX=./android/arm64-v8a
./configure \
--prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--disable-shared \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-$ANDROID_API/arch-arm64 \
--extra-cflags="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=$ANDROID_API -U_FILE_OFFSET_BITS -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv8-a -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fPIC" \
--arch=aarch64 \
--target-os=android
make clean
make install
另:动脑学院不好,配不上六七千的学费。