【问题标题】:FFmpeg : Encode Rgb Frames (AvFrames) to H264FFmpeg:将 Rgb 帧 (AvFrames) 编码为 H264
【发布时间】:2010-12-10 15:45:33
【问题描述】:

当我使用 H264 编码 Rgb24 帧时,我得到“输入宽度大于步幅”...

顺便说一句,如果我给出的是 Yuv420p 的原始图像,ffmpeg 会成功对其进行编码...

我想知道的是:

i) 我们必须提供 Yuv 格式进行编码吗?无法提供用于编码 h264 的 rgb 帧?
ii) 如果我们可以给 rgb 框架,有什么诀窍?

【问题讨论】:

  • 您是从命令行使用 ffmpeg,还是使用 libav* 库 C API?
  • 使用 libav* 库 C API

标签: ffmpeg


【解决方案1】:

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

来自以下 MSDN 文章(我知道它是 MSDN,但它对所涉及概念的解释非常好):

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

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

Read more here

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

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多