我正在使用ndk r9b版本在android中构建ffmpeg 2.1.3。
我使用了以下命令。
./configure --enable-shared --prefix=/home/fbuild
--cross-prefix=arm-linux-androideabi-
--enable-cross-compile
--target-os=linux --arch=arm --enable-gpl
--enable-libx264 --extra-cflags=-I/home/fbuild/include
--extra-ldflags=-L/home/fbuild/lib --disable-doc
--disable-ffmpeg --enable-network --disable-ffplay
--disable-ffprobe --disable-ffserver --enable-avresample
--enable-decoders
--enable-encoders
--enable-muxers
--enable-demuxers
--enable-parsers --enable-protocols --enable-filters
--enable-avresample --disable-indevs --enable-indev=lavfi
--disable-outdevs --enable-hwaccels --enable-libx264
--enable-zlib --enable-muxer=md5 --enable-runtime-cpudetect
--cpu=cortex-a8
--enable-pthreads --enable-static
在config.log
中 main:ffconf.82qqjSTF.c(.text+0x4): error: undefined reference to '**pthread_cancel**
清楚地表明,pthread_cancel不可用。
这是一个现有问题,还是我们还有其他任何解决方案?
我已启用'--enable-pthreads',
我正在尝试通过UDP
流式传输RTSP流非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
这是一个现有问题吗?
官方NDK文件指出:
Bionic不支持
pthread_cancel()
,因为这样做会让C库显着增大,效益甚微。 [...]所有这些都与仿生设计目标背道而驰。如果您的代码取决于线程取消,请考虑替代方案。
参见Bionic Overview部分
据说ffmpeg configure脚本自动检测到:
if enabled pthreads; then
check_func pthread_cancel
fi
因此,如果pthread_cancel
不可用,我假设ffmpeg在执行方面有回退(请参阅#if HAVE_PTHREAD_CANCEL
部分)。