图片格式转换,指的是将图片从一种格式转换到另一种格式(如YUV420到RGB888),可以通过ffmpeg实现
图片格式转换的使用场景之一是:当我们要播放一段视频时解封装得到了一段视频原始数据,可是我们使用的播放器(如SDL)不支持该采样格式的视频原始数据,这时就需要进行图片格式转换。
目录
图片格式转换用到的结构体
音频重采样用到的函数
文章来源地址https://www.toymoban.com/news/detail-404072.html
图片格式转换用到的结构体
SwrContex 重采样上下文
AVFrame 存放解码后数据的结构体
音频重采样用到的函数
1、 创建格式转换上下文
struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat,
int dstW, int dstH, enum AVPixelFormat dstFormat,
int flags, SwsFilter *srcFilter,
SwsFilter *dstFilter, const double *param);
2、 初始化帧数据(在堆内开辟空间)
AVFrame *av_frame_alloc(void);
3、 初始化重采样输出AVFrame中data的空间(在堆内开辟空间)
int av_image_alloc(uint8_t *pointers[4], int linesizes[4],
int w, int h, enum AVPixelFormat pix_fmt, int align);
4、 重采样函数
int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[],
const int srcStride[], int srcSliceY, int srcSliceH,
uint8_t *const dst[], const int dstStride[]);
5、 重采样结束后需要释放相关数据,首先是AVFrame中的data部分
void av_freep(void *ptr);
6、 释放AVFrame
void av_frame_free(AVFrame **frame);
7、 释放重采样上下文
void sws_freeContext(struct SwsContext *swsContext);文章来源:https://www.toymoban.com/news/detail-404072.html
到了这里,关于ffmpeg图片格式转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!