Ich habe versucht, Videos zu bearbeiten und zu codieren. Ich habe ein sogenanntes SD-Video, das angeblich das Seitenverhältnis 4:3
haben soll. Anstelle von 640x480
ist es jedoch 720x480
. Interessanterweise sehe ich beim Abspielen mit einem Mediaplayer 640x480
– es wird nicht als 720x480
abgespielt!
Was ist los?! Wie könnte es möglich sein?
Antwort
525/60 digitalisiertes SD-Video gemäß Rec. 601 ist in der Tat 720 Pixel breit, 480 Pixel hoch, einschließlich einiger Ausblendungen an den Seiten. Das digitale Äquivalent von 625/50 ist 720 x 576. In beiden Fällen beträgt das Bildseitenverhältnis 4: 3, was einfach bedeutet, dass die Pixel nicht quadratisch sind. Siehe https://en.wikipedia.org/wiki/D-1_(Sony)
Um die Sache komplexer zu gestalten, hat nur eine Teilmenge des Frames 4 : 3 Proportionen. Ich glaube, nur die 704×480 (für 525/60) und 704×576 (für 625/50) haben 4: 3-Proportionen. Siehe Diskussion hier: https://lurkertech.com/lg/video-systems/
480 Pixel sind also 10/11 proportional, 576 Pixel sind im Verhältnis 59/54. Siehe auch hier: https://en.wikipedia.org/wiki/Pixel_aspect_ratio Und vergessen Sie nicht, dass sowohl 480-Zeilen- als auch 576-Zeilen-Formate verwendet werden können Breitbild (16: 9) mit der gleichen Anzahl von Pixeln pro Zeile! Außerdem ist es nicht einfach, mit Zahlen wie 59/54 zu arbeiten. All dies führte dazu, dass für das 576-Zeilen-Format das Pixel-Seitenverhältnis als 12/11 für das 4: 3-Bildschirm-Seitenverhältnis und als 16/11 für das 16: 9 gewählt wurde.
Quadratische Pixel wurden zur Norm Ich glaube, ausgehend vom VGA-Videoadapter und dann von den HD-Spezifikationen für Videos mit 720 und 1080 Zeilen. Übrigens gibt es einige HD-Formate, die 1440 x 1080 oder 960 x 720 aufnehmen, jedoch ein Bildseitenverhältnis von 16: 9 und nicht quadratische Pixel aufweisen. Quadratische Pixel sind eine relativ junge Entwicklung und sollten nicht automatisch erwartet werden.
Kommentare
- Vielen Dank für die Beschreibung. Ich ‚ spiele mit
FFmpeg
für einige Experimente herum (um zu sehen, ob die beiden die gleichen Szenenschnittlängen haben). Da die Wiedergabe dieselbe ist, sollte ich vonffmpeg
annehmen, dass 640×480 und 720×480 identisch sind?! - ffmpeg (nicht ffplay) skaliert Videos niemals neu Das Seitenverhältnis der Anzeige, sodass Filter und Encoder nur mit den Rasterdaten arbeiten, die in Ihrem Fall 720 x 480 betragen.
- Nicht quadratische Pixel würden wahrscheinlich erfordern, dass Sie das Video erneut abtasten, die schlechteste Art von Transcodierung, die der Menschheit bekannt ist, um sie zu beheben.
Antwort
Es gibt zwei verschiedene Dinge:
- Die reale Breite und Höhe von Frames (in Pixel) – siehe den grünen Teil des folgenden Bildes.
- Die angezeigte Breite und Höhe (während der Wiedergabe) – siehe den blauen Teil desselben Bildes.
Das Problem trat in der Vergangenheit auf schlechte Tage, an denen die Auflösung der Geräte (Anzahl der Pixel im Bild) sehr niedrig war, das erforderliche Verhältnis von Breite zu Höhe für die Wiedergabe jedoch 4: 3 betrug.
Die Lösung (in damals) war die Erfindung von nicht quadratischen Pixeln.
Der Einfachheit halber nehmen wir (theoretisch) sehr niedrige Dimensionen an:
- erforderlich: 4 x 3 Pixel (i. e. 12 Pixel) pro Frame.
- real möglich (zum akzeptablen Preis): 3 x 3 (dh 9 Pixel).
Die Lösung bestand aus nicht quadratischen Pixeln mit das Pixel-Seitenverhältnis ( PAR ) 4: 3 , wie hier:
Also das Pixel-Seitenverhältnis ( PAR ) ist das Größenverhältnis jedes einzelnen Pixels:
Jedes Blau Pixel in unserem Bild haben PAR 4: 3, und jedes Orange und jedes Grün hat PAR 1: 1.
Jetzt wird unser gesamtes (blaues) Bild korrekt angezeigt, wie wir wollten – e. G. 12 cm x 9 cm – daher beträgt das Anzeige-Seitenverhältnis ( DAR ) 12: 9 oder 4: 3.
Trotzdem wird es als 3 x 3 Pixel gespeichert – also das Speicher-Seitenverhältnis ( SAR ) ist 3 Pixel: 3 Pixel oder 1: 1.
Hinweis:
- Pixel-Seitenverhältnis ( PAR ) ist Mikrometer: Mikrometer
- Das Seitenverhältnis der Anzeige ( DAR ) beträgt Zentimeter: Zentimeter
- Speicher-Seitenverhältnis ( SAR ) ist Pixel: Pixel
Folglich ist die Beziehung zwischen Diese 3 Werte sind
DAR = SAR × PAR
Der wichtige Hinweis:
Manchmal ist PAR (Pixel-Seitenverhältnis), genannt Beispiel-Seitenverhältnis – wie in FFmpeg . Leider ist die Abkürzung dafür dann SAR , was sehr verwirrend ist, weil es – wie wir gesehen haben – auch das ist Abkürzung für Storage Aspect Ratio.
Das Hauptproblem:
Heutzutage haben alle Geräte ein Pixel-Seitenverhältnis von 1: 1 (quadratische Pixel) und Viele Mediaplayer, hauptsächlich für kleine Geräte (Mobiltelefone, Tablets), verlassen sich darauf und ignorieren den in DAR gespeicherten Wert vollständig Videostreams.
Es kann also vorkommen, dass dasselbe Video (aus allen Quellen) auf Ihrem Desktop- oder Laptop-Computer korrekt wiedergegeben wird, auf Ihrem Smartphone jedoch falsch (verengt) oder sogar auf dem anderer Media Player auf demselben Computer oder Gerät.
In unserem Beispiel werden die Frames möglicherweise fälschlicherweise als Quadrat angezeigt (siehe den grünen Teil des obigen Bildes).
Die Lösung dieses Problems in FFmpeg:
- Ändern Sie die Größe des problematischen Videos und dann
- s et die SAR davon auf 1 und
- die DAR hat sehr wahrscheinlich den richtigen Wert, aber Sie können ihn sicher einstellen.
In unserem (unwirklichen) Beispiel Sie kann den Filtergraphen
-vf scale=4:3,setsar=1,setdar=w/h
verwenden, wobei w
das mit (gerade skalierten) Frames in Pixel ist, h
ist ihre Höhe. FFmpeg ersetzt die entsprechenden Werte automatisch.
Das Ergebnis ist der orangefarbene Teil des obigen Bildes.
In Ihrem Fall hat Ihr Video (aus Ihren Informationen)
- DAR 4: 3 (640: 480),
- SAR (Speicheraspektverhältnis) 720: 480 = 3: 2 und folglich
- PAR = DAR / SAR = 8: 9. (In der FFmpeg-Terminologie ist es SAR – Beispiel-Seitenverhältnis).
Also Um Probleme mit Mediaplayern zu vermeiden, die den Wert DAR ignorieren (und ihn im Verhältnis 720: 480 wiederzugeben, können Sie dies in Betracht ziehen Konvertieren Sie es mit dem Befehl
ffmpeg -i your_input_file -vf -scale=640:480,setsar=1 -c:a copy your_output_file
Probleme mit Bildern mit nicht quadratischen Pixeln:
Bei Bildern ist die Situation noch viel schlimmer:
Fast alle Bildbetrachter / Editoren und Internetbrowser ignorieren einfach Bilder SAR und DAR , vorausgesetzt, das alles Bilder auf der ganzen Welt haben SAR 1: 1.
Die ehrenwerte Ausnahme ist (interessanterweise) und überraschenderweise) Microsoft Windows Photo Viewer , in dem alle Bilder korrekt angezeigt werden ctly.
Sie können davon überzeugt sein e. G. durch den Der Säuretest des Pixel-Seitenverhältnisses – alle 9 Bilder dort sollten korrekt in Ihrem Browser angezeigt werden, aber höchstwahrscheinlich nicht.
Kommentare
- gut beschrieben. Danke! Beide sind korrekt. Sobald die Anzahl der Ups höher wird, wird die beste Antwort aktualisiert.