2010-12-10 166 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

看看你都爲您的圖像寬度和圖像步幅指定的。無論您爲該行提供的數據是否具有比您爲步幅指定的更多位數(如果它們達成一致,我也會猜測寬度)。