gpt4 book ai didi

c++ - 如何逐像素填充AvFrame

转载 作者:行者123 更新时间:2023-11-30 05:13:15 24 4
gpt4 key购买 nike

我尝试使用 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
}
}

然后我有这个视频输出:

enter image description here

我有 ffmpeg 的这个选项:

编解码器:libx264rgb& pix_fmt : AV_PIX_FMT_BGR24

事实上我期待这样的视频输出:

enter image description here

我也是 ffmpeg 的新手,我真的不知道有关视频编码的高级知识,所以有人知道有什么问题吗?

最佳答案

我改变了:

ret = av_frame_get_buffer(frame, 32);

ret = av_frame_get_buffer(frame, 1);

它修复了。

关于c++ - 如何逐像素填充AvFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44048078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com