Ich habe einen Videostream mit 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 ausführe, 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 tatsächliche 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 der Fall ist, welchen Befehl ffmpeg muss ich ausführen, um die Metadaten zu reparieren, ohne das Video selbst neu zu codieren?
-c copy
und skalieren. Sie können jedoch-aspect
das Seitenverhältnis auf Containerebene (jedoch nicht auf Stream-Ebene) ändern.-aspect
funktioniert für die Wiedergabe inffplay
, aber nicht in WMP oder MPC-HC. Es fügt einen zusätzlichen SAR / DAR Artikel dieStream #…
Infozeile inFFmpeg/probe/play
aber scheint nicht Lösung für die allgemeine Wiedergabe zu sein. Das Strecken des Videos mit dem Fenster scheint die einfachste Lösung für die MPC-HC-Wiedergabe zu sein.Delgados Antwort ist richtig, dass MP4Box dies kann, aber die
-par
Option funktioniert nicht ganz wie beschrieben. Mit einem-out
Parameter (um Ihre Originaldatei nicht zu stören):Wenn Sie verwenden
-par stream-number=width:height
, definieren Sie das Pixel-Seitenverhältnis, dh das Ergebnis der Division des Geräteseitenverhältnisses durch das Speicherseitenverhältnis. (Entsprechend beschreiben Sie das Seitenverhältnis eines Quellpixels.) Angenommen, Sie haben eine DVD-Quelle mit der Größe 720 × 480 und das korrekte Seitenverhältnis der Anzeige beträgt 4: 3. Für diesen Fall benötigen Sie:weil (4/3) / (720/480) = 8/9.
Wenn die Quelle echte SD-NTSC-Pixel darstellt (in diesem Fall sollen nur die zentralen 704 × 480 Pixel einem 4 × 3-Bildschirm mit 8 Pixeln Overscan auf beiden Seiten zugeordnet werden), lautet der richtige Befehl:
weil (4/3) / (704/480) = 10/11 - genau das Referenzpixel-Seitenverhältnis für NTSC-Video mit Standardauflösung.
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 arbeitet mit weniger als 1, was auf NTSC hindeutet. Es könnte 4: 5 sein, nehme ich an (sehr nahe an 104: 135), aber ich weiß nichts, was dieses Pixel-Seitenverhältnis erzeugt; Vielleicht versuchen Sie das zuerst und dann 3: 4, wenn es horizontal immer noch etwas zu gestreckt aussieht. Wenn Sie sicher sind, dass es genau 4: 3 ist, verwenden Sie einfach 104: 135.
quelle
ffmpeg kann die Parameter eines Videostreams nicht ohne Neucodierung ändern, MP4Box (Teil von gpac ) und mkvmerge können dies. Bei einem Videostream und einem realen / korrekten Seitenverhältnis von 4: 3 möchten Sie möglicherweise Folgendes versuchen:
So überprüfen Sie vorher und nachher:
ffmpeg -i VideoFile.mp4
quelle
Ändern des SAR ohne reencoding auch Arbeiten mit
ffmpeg
auf.mp4
die Verwendungh264_metadata
als Gyan wies darauf hin , hier :quelle