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