FFmpeg:将Rgb帧(AvFrames)编码为H264

时间:2010-12-10 15:45:34

标签: ffmpeg

当我使用H264编码Rgb24帧时,我得到“输入宽度比步幅更大”... 顺便说一句,如果我给Yuv420p原始图像,ffmpeg sucussfully编码...

我想知道的是:

i)我们是否必须提供Yuv格式进行编码?不能给rgb帧编码h264? ii)如果我们能给出rgb框架,那么诀窍是什么?

1 个答案:

答案 0 :(得分:0)

我知道这有点晚了(自2010年以来没有答案),听起来你需要(或需要)来调整图像数据的包装。

从下面的MSDN文章(我知道它是MSDN,但它对所涉及的概念的解释真的很好):

  

当视频图像存储在内存中时,内存缓冲区可能会   在每行像素后包含额外的填充字节。填充物   bytes会影响图像在内存中的存储方式,但不会影响图像的方式   显示图像。

     

步幅是内存中一行像素的字节数   内存中的下一行像素。 Stride也称为音高。如果   存在填充字节,步幅宽于宽度   图像,如下图所示。

     

Image stride illustration

Read more here

查看您为图像宽度和图像步幅指定的内容。无论你为行提供什么数据都比你为步幅指定的位数多(我猜测宽度也是如此,如果它们是一致的话)。