Возникли проблемы с чтением видео YUV с помощью mplayer/mencoder

Возникли проблемы с чтением видео YUV с помощью mplayer/mencoder

Я экспериментирую с форматом видео YUV raw. Это видео YUV, которое я создал (с помощью ppmtoy4m из mjpegtools, из серии снимков экрана, сделанных с частотой 24 кадра в секунду), нормально воспроизводится с Totem, правильная скорость, правильные цвета, все. Плюс, ffmpeg может преобразовать его в .mpg просто отлично. Но mplayer и mencoder теряются. Я использую версию 1.0-0.47.svn20100703 в CentOS 6.

Я пытался...

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

...но в результате получается странное смещение кадра, как у старого телевизора с нерегулируемой горизонтальной разверткой. По-видимому, он интерпретирует заголовки кадров так, как будто они являются частью кадра.

Сжатый файл 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-потоки, которые mplayerможно воспроизводить, ppmtoy4mне будет их генерировать. Вы можете использовать

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

Если вместо этого вы захотите воспроизвести поток y4m, кому-то другому придется откопать правильные аргументы mplayer(или другой инструмент).

Связанный контент