我正在使用 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 流mplayer
,ppmtoy4m
则不会生成这些。您可能能够使用
ffmpeg -i %04d.ppm -c:v rawvideo -f rawvideo -pix_fmt yuv420p video.yuv
如果您想播放 y4m 流,其他人就必须挖掘正确的参数mplayer
(或其他工具)。