Возникли проблемы при чтении YUV-видео с mplayer/mencoder
Я делаю некоторый опыт с форматом необработанного видео YUV. Это видео YUV, которое я создал (с ppmtoy4m из mjpegtools, из серии снимков экрана, сделанных со скоростью 24 кадра в секунду), хорошо воспроизводит тотем, правильную скорость, правильные цвета, все. Кроме того, ffmpeg может преобразовать его в.mpg просто отлично. Но mplayer и mencoder теряются. Я использую версию 1.0-0.47.svn20100703 в CentOS 6.
Я старался...
mplayer video.yuv -demuxer rawvideo -rawvideo w=1152:h=864:format=i420
... но в результате получается странное смещение кадра, как у старого телевизора с нерегулируемой горизонталью. По-видимому, он интерпретирует заголовки фрейма, как если бы они были частью фрейма.
YUV-файл bzipped можно найти здесь (ВНИМАНИЕ: сжатие 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, что mplayer
может играть, ppmtoy4m
не будет генерировать их. Вы могли бы быть в состоянии использовать
ffmpeg -i %04d.ppm -c:v rawvideo -f rawvideo -pix_fmt yuv420p video.yuv
Если вместо этого вы хотите воспроизвести поток y4m, кто-то другой должен будет найти правильные аргументы для mplayer
(или другой инструмент).