ffmpeg图片格式转换

图片格式转换,指的是将图片从一种格式转换到另一种格式(如YUV420到RGB888),可以通过ffmpeg实现

图片格式转换的使用场景之一是:当我们要播放一段视频时解封装得到了一段视频原始数据,可是我们使用的播放器(如SDL)不支持该采样格式的视频原始数据,这时就需要进行图片格式转换。

目录

 图片格式转换用到的结构体

音频重采样用到的函数 


 

 图片格式转换用到的结构体

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);

 

你可能感兴趣的:(音视频相关,音视频)