it-swarm.com.de

Korrigieren Sie das Seitenverhältnis, ohne die Videodatei neu zu codieren

Ich habe einen Videostream mit den folgenden Eigenschaften:

Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc

Wenn ich es in VLC starte, muss ich "A" drücken, um das Seitenverhältnis auf "4: 3" zu ändern, damit das Video mit dem richtigen Seitenverhältnis angezeigt wird.

Betrachtet man die Videofakten, ist der Fehler, dass a) das eigentliche Video in den Pixeldaten falsch gestreckt wurde, oder b) einfach ein Metadatenwert falsch eingestellt wurde?

Wenn erstere, weiß ich, dass ich das Video neu codieren und die Breite und Höhe ändern kann. Aber wenn letzteres, welchen ffmpeg-Befehl muss ich ausführen, um die Metadaten zu korrigieren, ohne das Video selbst neu zu codieren?

12
forthrin

Es gibt einen Unterschied zwischen Sample Aspect Ratio (SAR) und Display Aspect Ratio (DAR). Wenn Sie das Video so ändern möchten, dass es mit 4: 3 angezeigt wird, müssen Sie entweder die tatsächlichen Pixel im Bild ändern (indem Sie die Pixel skalieren und den SAR-Wert ändern) oder ein Metadaten-Flag setzen, das auf Containerebene den Wert external angibt Mediaplayer, um das Bild auf den gewünschten DAR zu strecken.

Sie können die Pixel nicht skalieren und die SAR nicht ändern, ohne einen Videofilter anzuwenden. Wenn Sie diese Methode wählen, müssen Sie die Datei umcodieren, da Sie den Videostream nicht "streamen" können, während Sie einen Videofilter anwenden.

Versuchen Sie Folgendes, um das Bild zu skalieren und die SAR (während der Transkodierung) zu ändern:

ffmpeg -i <INPUT_FILE> -vf scale=720:540 -c:v <Video_Codec> <OUTPUT_FILE>

Wenn Sie jedoch nur das Metadaten-Flag ändern und das DAR anpassen möchten, können Sie das Video als Stream kopieren. Versuchen Sie dazu:

ffmpeg -i <INPUT_FILE> -aspect 720:540 -c copy [OUTPUT_FILE]
28
occvtech

ffmpeg kann die Parameter eines Videostreams nicht ohne Neucodierung ändern. MP4Box (Teil von gpac ) und mkvmerge können. Bei einem Videostream und einem echten/korrekten Seitenverhältnis von 4: 3 möchten Sie möglicherweise Folgendes versuchen:

MP4Box -par 1=3:4 VideoFile.mp4

    "-par" : PixelAspectRatio (adjusts DAR + SAR with respect to the video resolution)
    "1"=   : stream number
    "3:4"  : aspect ratio (lower number 1st!)
    Changes are directly applied to "VideoFile.mp4", no copy

So überprüfen Sie vor und nach: ffmpeg -i VideoFile.mp4

2
Delgado

Delgados Antwort ist richtig, dass MP4Box dies kann, aber die Option -par funktioniert nicht ganz wie beschrieben. Mit einem -out-Parameter (um Ihre Originaldatei nicht zu stören):

mp4box source.mp4 -out target.mp4 -par stream-number=width:height

Wenn Sie -par stream-number=width:height verwenden, definieren Sie das Pixel-Seitenverhältnis, dh das Ergebnis der Division des Geräte-Seitenverhältnisses durch das Speicher-Seitenverhältnis. (Entsprechend beschreiben Sie das Seitenverhältnis eines Quellpixels.) Angenommen, Sie haben eine DVD-Quelle mit 720 × 480 und das richtige Seitenverhältnis für die Anzeige ist 4: 3. Für diesen Fall benötigen Sie:

mp4box source.mp4 -out target.mp4 -par 1=8:9

weil (4/3)/(720/480) = 8/9.

Wenn die Quelle echte SD NTSC Pixel darstellt (in diesem Fall sollten nur die zentralen 704 × 480 Pixel auf einen 4 × 3-Bildschirm abgebildet werden, wobei 8 Pixel auf beiden Seiten überstrichen werden), wäre der richtige Befehl :

mp4box source.mp4 -out target.mp4 -par 1=10:11

weil (4/3)/(704/480) = 10/11 - genau das Bezugspixel-Seitenverhältnis für Video mit Standardauflösung NTSC.

Für den in der Frage angegebenen Fall ergibt sich, wenn es wirklich 4: 3 ist, ein sehr merkwürdiges Pixel-Seitenverhältnis: (4/3)/(720/416) = 104/135. Es ist 720 breit, was auf eine DVD-Quelle hindeutet. Es ist ein 25-fps-Video, das PAL vorschlägt, aber der PAR ist kleiner als 1, was NTSC vorschlägt. Es könnte 4: 5 sein, nehme ich an (sehr nahe an 104: 135), aber ich kenne nichts, was dieses Pixel-Seitenverhältnis erzeugt; Versuchen Sie es zuerst, und versuchen Sie es dann mit 3: 4, wenn es horizontal noch etwas zu gestreckt aussieht. Wenn Sie sicher sind, dass es genau 4: 3 ist, verwenden Sie einfach 104: 135.

2
Coises