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

1268
JCCyC

Я делаю некоторый опыт с форматом необработанного видео 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 гига!)

В indiviual м.д. кадры здесь (2,8 мегабайта сжатый, 557 мегабайт несжатого)

Видео было создано с

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

Есть ли параметр, который я пропускаю?

1
YUV-файлы не имеют заголовка фрейма, так что это не проблема. Я подозреваю, что виновником является тот факт, что вы используете действительно старую версию mplayer, в которой может быть просто ошибка. Попробую проверить файл позже. slhck 12 лет назад 1
Два года спустя, вы когда-нибудь находили решение для этого? У меня та же проблема, я могу обойти горизонтальную прокрутку, вручную установив размер кадра (x * y * 1.5) +6 (чтобы впитать «FRAME \ n» в конце каждого кадра), но есть еще немного смещения из-за заголовка YUV4MPEG в начале файла. В другом месте я читал, что mplayer должен иметь возможность проигрывать поток YUV4MPEG просто с помощью «mplayer stream.yuv», но это приводит к значительному «слишком малому кадру!» Сообщения. pix 10 лет назад 0

1 ответ на вопрос

0
Mutant Bob

Ваша проблема в том, что формат 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(или другого инструмента).

Похожие вопросы