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

FFmpeg:将Rgb帧(AvFrames)编码为H264,ffmpeg,Ffmpeg,当我用H264编码Rgb24帧时,我得到了“输入宽度大于跨步”。。。 顺便说一下,如果我给原始图像Yuv420p,ffmpeg成功地编码了它 我想知道的是: i) 我们必须为编码提供Yuv格式吗?无法为编码h264提供rgb帧? ii)如果我们可以提供rgb帧,诀窍是什么?我知道这有点晚(2010年以来没有答案),但听起来您需要(或需要)调整图像数据的包装 从下面的MSDN文章(我知道它是MSDN,但它对涉及的概念的解释非常好): 当视频图像存储在内存中时,内存缓冲区可能会 在每行像素后包含额外

当我用H264编码Rgb24帧时,我得到了“输入宽度大于跨步”。。。 顺便说一下,如果我给原始图像Yuv420p,ffmpeg成功地编码了它

我想知道的是:

i) 我们必须为编码提供Yuv格式吗?无法为编码h264提供rgb帧? ii)如果我们可以提供rgb帧,诀窍是什么?

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

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

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

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


查看您为图像宽度和图像步幅指定的内容。为行提供的任何数据的位数都比为跨步指定的位数多(如果一致的话,我也在猜测宽度)

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