正在尝试在 Android 上使用 ffmpeg 。第一步实现了视频解码,编译时只开启了 decoder,没有问题。第二步实现编码时,开始了 encoder,但是发现 libavcodec/encode.c 未被编进 libacodec.so ,导致编码需要使用的方法不能链接。
clang++: error: linker command failed with exit code 1.
查看 ffmpeg 的编译日志发现,encode.c 好像没被编译,所以 libavcodec.so 中根本就没有 encode 相关方法的实现。
CC libavcodec/dirac.o
CC libavcodec/dv_profile.o
CC libavcodec/error_resilience.o
CC libavcodec/exif.o
CC libavcodec/faandct.o
CC libavcodec/faanidct.o
1
StefanJ OP 编译配置参考的: https://gist.github.com/CaiJingLong/feefa3b63e5b94f5ad1807825861e0e0
``` NDK=$ANDROID_NDK_ROOT TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64 API=29 function build_android() { PREFIX=$(pwd)/android/$CPU echo "Compiling FFmpeg for $CPU to $PREFIX" ./configure \ --prefix="$PREFIX" \ --disable-stripping \ --enable-jni \ --cross-prefix="$CROSS_PREFIX" \ --target-os=android \ --arch="$ARCH" \ --cpu="$CPU" \ --cc="$CC" \ --cxx="$CXX" \ --enable-cross-compile \ --sysroot="$TOOLCHAIN"/sysroot \ --enable-libx264 \ --extra-cflags="$OPTIMIZE_CFLAGS -Iexternal-libs/x264/$CPU/include" \ --extra-ldflags="$ADDI_LDFLAGS -Lexternal-libs/x264/$CPU/lib" \ $COMMON_FF_CFG_FLAGS make clean make make install echo "==== The Compilation of FFmpeg for $CPU is completed: $PREFIX ====" } ``` |
2
StefanJ OP 解决了🤔,重新下载了一份源码,没问题了....
|
3
msg7086 2020-08-14 16:42:21 +08:00
遇到过这种情况,一般是没有先 clean 导致的,有些配置残留在目录里。
忘记 clean 的话可以用 git 的清理目录功能把多余的文件删掉。 |