Probleme beim Lesen eines YUV-Videos mit mplayer / mencoder

1

Ich mache einige Erfahrungen mit dem YUV-Rohvideoformat. Dieses von mir erstellte YUV-Video (mit ppmtoy4m von mjpegtools, aus einer Reihe von Screenshots, die mit 24 fps aufgenommen wurden) funktioniert einwandfrei mit Totem, korrekter Rate, korrekten Farben und allem. Außerdem kann ffmpeg es problemlos in eine .mpg-Datei konvertieren. Aber Spieler 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 Fernseher mit einer deregulierten Horizontalen. Scheinbar interpretiert es die Frame-Header so, als wären sie Teil des Frames.

Die betreffipped YUV-Datei kann gefunden werden Hier (ACHTUNG: 34 MB komprimiert, 3,5 GB unkomprimiert!)

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

Das Video wurde mit generiert

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

Gibt es einen Parameter, den ich vermisse?

JCCyC
quelle
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 Bug hat. Ich werde später versuchen, die Datei zu überprüfen.
slhck
Haben Sie nach zwei Jahren jemals eine Lösung dafür gefunden? Ich habe das gleiche Problem. Ich kann das horizontale Scrollen umgehen, indem ich die Rahmengröße manuell auf (x * y * 1,5) +6 stelle (um den "RAHMEN \ n" am Ende jedes Rahmens aufzunehmen), aber Aufgrund des YUV4MPEG-Headers am Anfang der Datei ist immer noch ein gewisser Offset vorhanden. Ich habe an anderer Stelle gelesen, dass mplayer in der Lage sein sollte, einen YUV4MPEG-Stream einfach mit "mplayer stream.yuv" abzuspielen, aber das produziert viel "Frame too small"! Mitteilungen.
pix

Antworten:

0

Ihr Problem ist, dass das y4m-Format nicht yuv ist. Wie bereits erwähnt, hat yuv KEINE Metadaten und es fehlen gerade Breiten- und Höheninformationen (ganz zu schweigen von 4: 2: 0 4: 2: 2 oder 4: 4: 4; 8-Bit-, 10-Bit-, 16-Bit-Varianten).

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

Wenn Sie rohe yuv Ströme das wollen mplayer kann spielen, ppmtoy4m erzeugt diese nicht. 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 jemand anderes die richtigen Argumente ausgraben mplayer (oder ein anderes Werkzeug).

Mutant Bob
quelle