解决利用FFmpeg进行保存图片功能开发时遇到的问题

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配置很复杂,如果配置不好有些功能使用上就会有问题,但是如果把所有组件(模块)全部放开,一则编译时间会增加,二则编译出来的库文件会变大。以后还要不断学习,深入研究。

猜你喜欢

转载自www.cnblogs.com/zuoao123/p/10304214.html
今日推荐