我尝试使用ffmpeg将opengl输出编码为mp4文件,但是当我想用这段代码片段填充像素颜色的AvFrame时:
for (y = 0; y < c->height; y++) {
for (x = 0; x < c->width; x++) {
int offset = 3 * (x + y * c->width);
if (x > 2* c->width / 3 && x <c->width )
{
frame->data[0][offset + 0] = 0; // B
frame->data[0][offset + 1] = 0; // G
frame->data[0][offset + 2] = 255; // R
}
else if(x < 2 * c->width / 3 && x > c->width / 3) {
frame->data[0][offset + 0] = 0; // B
frame->data[0][offset + 1] = 255; // G
frame->data[0][offset + 2] = 0; // R
}
else {
frame->data[0][offset + 0] = 255; // B
frame->data[0][offset + 1] = 0; // G
frame->data[0][offset + 2] = 0; // R
}
}
然后我有这个视频输出:
我有ffmpeg的这个选项:
编解码器:libx264rgb &安培; pix_fmt:AV_PIX_FMT_BGR24
事实上,我希望像这样的视频输出:我也是ffmpeg的新手,我真的不知道关于视频编码的高级内容,所以任何人都知道什么是问题?
答案 0 :(得分:1)
ret = av_frame_get_buffer(frame, 32);
到
ret = av_frame_get_buffer(frame, 1);
并且修复了。