FFmpeg ARGB的AVFrame转yuv420的AVFrame的完整C++代码
时间: 2023-03-27 07:02:40 浏览: 154
将rgb24转换成yuv420的完整代码,C++实现。
以下是完整的C代码:
```
AVFrame *argb_frame = av_frame_alloc();
AVFrame *yuv_frame = av_frame_alloc();
// 设置argb_frame的属性
argb_frame->format = AV_PIX_FMT_ARGB;
argb_frame->width = width;
argb_frame->height = height;
// 分配argb_frame的缓冲区
int ret = av_frame_get_buffer(argb_frame, 32);
if (ret < ) {
// 错误处理
}
// 填充argb_frame的数据
// 将argb_frame转换为yuv_frame
struct SwsContext *sws_ctx = sws_getContext(width, height, AV_PIX_FMT_ARGB,
width, height, AV_PIX_FMT_YUV420P,
, NULL, NULL, NULL);
if (!sws_ctx) {
// 错误处理
}
ret = sws_scale(sws_ctx, argb_frame->data, argb_frame->linesize,
, height, yuv_frame->data, yuv_frame->linesize);
if (ret < ) {
// 错误处理
}
// 释放资源
sws_freeContext(sws_ctx);
av_frame_free(&argb_frame);
```
希望能够帮到你!
阅读全文