相关疑难解决方法(0)

如何调整 AVFrame 的大小?

你如何调整大小AVFrame?一世

这是我目前正在做的事情:

AVFrame* frame = /*...*/;

int width = 600, height = 400;
AVFrame* resizedFrame = av_frame_alloc();

auto format = AVPixelFormat(frame->format);

auto buffer = av_malloc(avpicture_get_size(format, width, height) * sizeof(uint8_t));

avpicture_fill((AVPicture *)resizedFrame, (uint8_t*)buffer, format, width, height);

struct SwsContext* swsContext = sws_getContext(frame->width, frame->height, format,
                                               width,         height,         format,
                                               SWS_BILINEAR,  nullptr,        nullptr,        nullptr);

sws_scale(swsContext, frame->data, frame->linesize, 0, frame->height, resizedFrame->data, resizedFrame->linesize);
Run Code Online (Sandbox Code Playgroud)

但毕竟这resizedFrames->widthheight仍然0时,AVFrame样子垃圾的内容,我得到一个警告,数据不对齐,当我打电话sws_scale。注意:我不想更改像素格式,也不想对其进行硬编码。

c c++ ffmpeg

2
推荐指数
1
解决办法
5128
查看次数

标签 统计

c ×1

c++ ×1

ffmpeg ×1