【发布时间】:2014-02-24 09:56:01
【问题描述】:
我正在学习 FFmpeg 中的视频编码和解码。我在page 上尝试了代码示例(仅视频编码和解码部分)。这里创建的虚拟图像采用 YCbCr 格式。如何通过创建 RGB 帧来实现类似的编码?我被困在:
首先,如何创建这个 RGB 虚拟帧?
其次,如何编码呢?使用哪个编解码器?他们中的大多数仅适用于 YUV420p...
编辑:我有一个 YCbCr 编码器和解码器,正如 page 上给出的那样。问题是,我的数据库中有 RGB 帧序列,我需要对其进行编码。但编码器适用于 YCbCr。所以,我想知道以某种方式将 RGB 帧转换为 YCbCr(或 YUV420P),然后对其进行编码。 在解码结束时,我得到解码的 YCbCr 帧并将它们转换回 RGB。如何继续?
我确实尝试了 swscontext,但转换后的帧会丢失颜色信息并且还会出现缩放错误。我想过使用两个 for 循环和 colorspace conversion formulae 手动完成 但我无法使用 FFmpeg/libav 库访问帧的单个像素!就像在 OpenCV 中一样,我们可以通过以下方式轻松访问它: Mat img(x,y) 但这里没有这样的东西!我完全是这个领域的新手......
有人可以帮助我吗?
非常感谢!
【问题讨论】:
-
同一个问题你问了 3 次!
-
huffyuv 和 libx264rgb 支持 rgb24 和 bgra。 utvideo 支持 rgb24 和 rgba。 ffv1 支持 bgr0 和 bgra。 qtrle 支持 rgb24、rgb555be 和 argb。见
ffmpeg -h encoder=foo。 -
@szatmary 是的,我无法正确发布它,遇到了一些问题。好的,请检查编辑,它更好地解释了我的问题。谢谢!
标签: video encoding ffmpeg video-encoding libavcodec