Ich habe versucht, ein paar Videos zu bearbeiten und zu codieren. Ich habe ein sogenanntes SD-Video, das angeblich im 4:3
Seitenverhältnis sein soll. Aber statt 640x480
, ist es 720x480
. Interessanterweise sehe ich, wenn ich es mit einem Mediaplayer abspiele, 640x480
- es wird nicht so abgespielt 720x480
!
Was ist los?! Wie könnte es möglich sein?
Es gibt 2 verschiedene Dinge:
Das Problem trat in alten schlechten Zeiten auf, als 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 (damals) war die Erfindung von nicht-quadratischen Pixeln.
Nehmen wir der Einfachheit halber (theoretisch) sehr geringe Abmessungen an:
Die Lösung waren nicht-quadratische Pixel mit dem Pixel-Seitenverhältnis ( PAR ) 4:3 , wie hier:
Das Pixel-Seitenverhältnis ( PAR ) ist also das Größenverhältnis jedes einzelnen Pixels:
Jedes blaue Pixel in unserem Bild hat PAR 4:3, und jedes orange und jedes grüne hat PAR 1:1.
Jetzt wird unser gesamtes (blaues) Bild korrekt angezeigt, wie wir es wollten – zB als 12 cm x 9 cm – also sein Display Aspect Ratio ( DAR ) ist 12:9, oder 4:3.
Trotzdem wird es als 3 × 3 Pixel gespeichert – das Speicherseitenverhältnis ( SAR ) beträgt also 3 Pixel : 3 Pixel oder 1:1.
Hinweis:
Folglich ist das Verhältnis zwischen diesen 3 Werten
DAR = SAR × PAR
Der wichtige Hinweis:
Manchmal wird PAR (Pixel Aspect Ratio) als Sample Aspect Ratio bezeichnet – wie in FFmpeg *. Leider ist die Abkürzung dafür dann SAR , was sehr verwirrend ist, weil es – wie wir gesehen haben – auch die Abkürzung für Storage Aspect Ratio ist.
Das Hauptproblem:
Heutzutage haben alle Geräte ein Pixelseitenverhältnis von 1:1 (quadratische Pixel), und viele Mediaplayer, hauptsächlich für kleine Geräte (Handys, Tablets), verlassen sich darauf und ignorieren den in Videostreams gespeicherten DAR-Wert vollständig .
Daher kann es vorkommen, dass dasselbe Video (aus allen Quellen erstellt) auf Ihrem Desktop- oder Laptop-Computer korrekt wiedergegeben wird, auf Ihrem Smartphone jedoch falsch (eingeschränkt). Oder sogar auf dem anderen Mediaplayer auf demselben Computer oder Gerät.
In unserem Beispiel werden die Rahmen möglicherweise fälschlicherweise als Quadrat angezeigt (siehe grüner Teil des Bildes oben).
Die Lösung dieses Problems in FFmpeg:
In unserem (unwirklichen) Beispiel können Sie den Filtergraph verwenden
-vf scale=4:3,setsar=1,setdar=w/h
wo w
ist die Breite von (nur skalierten) Rahmen in Pixeln, 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)
Um Probleme mit Mediaplayern zu vermeiden, die den DAR- Wert ignorieren (und ihn im Verhältnis 720:480 wiedergeben), können Sie erwägen, ihn mit dem Befehl zu konvertieren
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 die SAR- und DAR- Bilder von Bildern , vorausgesetzt, dass alle Bilder auf der ganzen Welt 1:1 SAR haben .
Die ehrenvolle Ausnahme ist (interessant und überraschenderweise) Microsoft Windows Photo Viewer, der alle Bilder korrekt anzeigt.
Davon können Sie sich zB durch den The Pixel Aspect Ratio Acid Test überzeugen - alle 9 Bilder dort sollten in Ihrem Browser korrekt angezeigt werden, sind es aber – sehr wahrscheinlich – nicht.
525/60 digitalisiertes SD-Video gemäß Rec. 601 ist tatsächlich 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 Frame-Seitenverhältnis 4:3, was einfach bedeutet, dass die Pixel nicht quadratisch sind. Siehe https://en.wikipedia.org/wiki/D-1_(Sony)
Um die Sache noch komplizierter zu machen, hat nur eine Teilmenge des Rahmens 4:3-Proportionen. Ich glaube, nur die 704x480 (für 525/60) und 704x576 (für 625/50) hat 4:3 Proportionen. Siehe Diskussion hier: https://lurkertech.com/lg/video-systems/
480 Pixel haben also ein Verhältnis von 10/11, 576 Pixel ein Verhältnis von 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 auch im Breitbildformat (16:9) sein können, aber die gleiche Anzahl von Pixeln pro Zeile haben ! 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 Pixelseitenverhältnis als 12/11 für das 4:3-Bildschirmseitenverhältnis und als 16/11 für 16:9 gewählt wurde.
Quadratische Pixel wurden zur Norm, beginnend mit dem VGA-Videoadapter, glaube ich, und dann mit den HD-Spezifikationen für 720-Zeilen- und 1080-Zeilen-Video. Übrigens gibt es einige HD-Formate, die 1440 x 1080 oder 960 x 720 aufzeichnen, aber mit einem Bildseitenverhältnis von 16:9 auch nicht quadratische Pixel haben. Quadratische Pixel sind eine relativ neue Entwicklung und sollten nicht automatisch erwartet werden.
FFmpeg
einigen Experimenten herum (um zu sehen, ob die beiden Szenen die gleichen Schnittlängen haben). Da also die Wiedergabe dieselbe ist, sollte ich davon ausgehen ffmpeg
, dass 640x480 und 720x480 identisch sind?!
MarianD