Probleme beim Lesen eines YUV-Videos mit mplayer / mencoder

1301
JCCyC

Ich mache einige Erfahrungen mit dem YUV-Rohvideoformat. Dieses von mir erstellte YUV-Video (mit ppmtoy4m von mjpegtools, einer Serie von Screenshots mit 24 Bildern pro Sekunde) spielt mit Totem, korrekter Rate, korrekten Farben und allem OK. Außerdem kann ffmpeg es in eine .mpg-Datei umwandeln. Aber Mplayer und Mencoder gehen verloren. Ich verwende Version 1.0-0.47.svn20100703 in CentOS 6.

Ich habe es versucht...

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

... aber das Ergebnis ist eine seltsame Bildverschiebung wie bei einem alten Fernsehgerät mit einer deregulierten Horizontalen. Scheinbar interpretiert es die Frame-Header so, als ob sie Teil des Frames wären.

Die bezippte YUV-Datei finden Sie hier (ACHTUNG: 34 MB komprimiert, 3,5 Gigs unkomprimiert!)

Die einzelnen ppm-Frames sind hier (2,8 MB komprimiert, 557 MB unkomprimiert)

Das Video wurde mit erstellt

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

Gibt es einen Parameter, den ich vermisse?

1
YUV-Dateien haben keinen Frame-Header, das ist also nicht das Problem. Ich vermute, der Schuldige ist die Tatsache, dass Sie eine wirklich alte Version von mplayer verwenden, die möglicherweise nur einen Fehler enthält. Versuchen Sie später, die Datei zu überprüfen. slhck vor 11 Jahren 1
Haben Sie zwei Jahre später eine Lösung dafür gefunden? Ich habe das gleiche Problem. Ich kann das horizontale Scrollen umgehen, indem Sie die Bildgröße manuell auf (x * y * 1,5) +6 setzen (um den "FRAME \ n" am Ende jedes Bildes aufzusaugen), aber Aufgrund des YUV4MPEG-Headers am Anfang der Datei gibt es noch einen kleinen Versatz. Ich habe an anderer Stelle gelesen, dass mplayer in der Lage sein sollte, einen YUV4MPEG-Stream einfach mit "mplayer stream.yuv" abzuspielen, aber das erzeugt eine Menge "Frame zu klein!" Mitteilungen. pix vor 9 Jahren 0

1 Antwort auf die Frage

0
Mutant Bob

Ihr Problem ist, dass das y4m-Format nicht yuv ist. Wie bereits erwähnt, hat yuv KEINE Metadaten und es fehlen Informationen zu Breite und Höhe (nicht zu vergessen die 4: 2: 0 4: 2: 2 oder 4: 4: 4; 8-Bit-, 10-Bit- und 16-Bit-Varianten).

Ich habe eine Beschreibung des Y4M-Formats unter https://wiki.multimedia.cx/index.php?title=YUV4MPEG2 gefunden und hat definitiv Metadaten.

Wenn Sie rohe Yuv-Streams wünschen, die abgespielt werden mplayerkönnen, ppmtoy4mwerden diese nicht erzeugt. Möglicherweise können Sie verwenden

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

Wenn Sie stattdessen einen y4m-Stream abspielen möchten, muss eine andere Person die richtigen Argumente mplayer(oder ein anderes Werkzeug) suchen .