使用 mplayer/mencoder 读取 YUV 视频时遇到问题

使用 mplayer/mencoder 读取 YUV 视频时遇到问题

我正在使用 YUV 原始视频格式积累一些经验。我制作的这个 YUV 视频(使用 mjpegtools 的 ppmtoy4m,来自以 24 fps 拍摄的一系列屏幕截图)在 Totem 上播放正常,速率正确,颜色正确,一切都正常。此外,ffmpeg 可以很好地将其转换为 .mpg。但 mplayer 和 mencoder 会丢失。我在 CentOS 6 中使用版本 1.0-0.47.svn20100703。

我试过...

mplayer video.yuv -demuxer rawvideo -rawvideo w=1152:h=864:format=i420

...但结果却出现了奇怪的帧位移,就像水平方向不受控制的旧电视一样。似乎它将帧头解释为帧的一部分。

压缩后的 YUV 文件可以找到这里(警告:压缩后为 34 MB,未压缩后为 3.5 GB!)

各个 ppm 帧是这里(压缩后为 2.8 MB,未压缩后为 557 MB)

视频由以下设备生成:

cat *.ppm | ppmtoy4m -F 24:1 >video.yuv

我是否遗漏了某个参数?

答案1

您的问题是 y4m 格式不是 yuv。正如 slhck 提到的,yuv 没有元数据,甚至缺少宽度和高度信息(更不用说指定 4:2:0 4:2:2 或 4:4:4 ;8 位、10 位、16 位变体)。

我在以下网址找到了 Y4M 格式的描述https://wiki.multimedia.cx/index.php?title=YUV4MPEG2并且它肯定有元数据。

如果您想要可以播放的原始 yuv 流mplayerppmtoy4m则不会生成这些。您可能能够使用

ffmpeg -i %04d.ppm -c:v rawvideo -f rawvideo -pix_fmt yuv420p video.yuv

如果您想播放 y4m 流,其他人就必须挖掘正确的参数mplayer(或其他工具)。

相关内容