最近做项目,需要将RGB32格式的QImage图像转换成YUV422P格式的图片,于是网上找了下相关资料顺便学习下,使用FFmpeg的sws_scale库.
libswscale库使用起来比较方便,主要使用到三个函数,即
1)sws_getContext,使用输入输出个数参数初始化SwsContext结构体;
2)sws_scale,进行转换工作;
3)sws_freeContext,释放SwsContext结构体;
具体可参考雷神博客 https://blog.csdn.net/leixiaohua1020/article/details/42134965;
具体执行过程中,发现av_image_alloc函数在处理很大图片时(比如大于30M),经常出现申请内存失败的情况,后来只能自己申请内存给原图像数组和转换后的图像数组,解决了这个问题,多次申请也存在申请失败的情况。