使用 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

……但結果是奇怪的幀位移,就像水平解除管制的舊電視一樣。看起來,它將幀頭解釋為幀的一部分。

可以找到bzip壓縮後的YUV文件這裡(警告:壓縮後為 34 兆,未壓縮為 3.5 兆!)

各個 ppm 影格是這裡(壓縮後 2.8 兆,未壓縮 557 兆)

影片是用生成的

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(或其他工具)的正確參數。

相關內容