https://www.cnblogs.com/zuoao123/p/10265795.html
FFmpeg编译成功后,放到工程中可以实现x264软解码,但是在进行保存图片时遇到两个函数调用失败问题,下面针对这两个问题进行说明。
1. av_guess_format("mjpeg", NULL, NULL)返回NULL
将YUV图像裸数据保存为jpg图片文件,需要用到mjpeg编码器。由于之前编译FFmpeg时,将不需要的编解码器全部disable掉了,所以想着需要把mjpeg相关的东西全部enable,在build_android_***.sh脚本文件中加入以下配置项:
--enable-encoder=mjpeg \
--enable-parser=mjpeg \
--enable-muxer=mjpeg \
本来以为这样编译后就可以了,但是还是没有成功,直接按如下方式修改脚本文件:
--enable-encoder=mjpeg \
--enable-parser=mjpeg \
--enable-muxers \
编译完成进行测试居然通过了。具体原因未知,现在先保证功能可以实现。
2. avio_open(&pFormatCtx->pb, filename, AVIO_FLAG_READ_WRITE)返回值<0
这个查找资料后了解到应该是文件操作相关的东西被disable掉了,在build_android_***.sh脚本文件中加入以下配置项:
--enable-protocol=file \
编译完成后再次进行测试也通过了。
后记
FFmpeg配置很复杂,如果配置不好有些功能使用上就会有问题,但是如果把所有组件(模块)全部放开,一则编译时间会增加,二则编译出来的库文件会变大。以后还要不断学习,深入研究。