2010-12-10 168 views
1

在i编码RGB24帧与H264我得到“输入宽度是磨碎器比大于步幅” ...... 通过如果我给原始图像是YUV420P,FFMPEG sucussfully编码的方式它...FFmpeg的:编码RGB帧(AvFrames)至H264

我想知道什么我说:

我)。我们得给YUV格式编码?不能给rgb帧编码h264? ii)如果我们可以给rgb框架,那么诀窍是什么?

+0

您是从命令行使用ffmpeg还是使用libav * library C API? – 2010-12-10 18:47:29

+0

使用libav *库C API – NoviceAndNovice 2010-12-11 10:43:28

回答

0

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

从以下MSDN文章(我知道这是MSDN,但其涉及的概念的解释真的很好):

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

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

Image stride illustration

Read more here

看看你都为您的图像宽度和图像步幅指定的。无论您为该行提供的数据是否具有比您为步幅指定的更多位数(如果它们达成一致,我也会猜测宽度)。