
Ich habe eine 30 Sekunden lange 1080p-Videodatei, die von Premiere Pro/Media Encoder (Zielbitrate 10) gerendert und in H.265 kodiert wurde. Sie ist 36,6 MB groß. Wenn ich den Befehl ausführe
ffmpeg -i input -c:v libx265 -c:a copy output.mp4
die neue Datei hat nur 5,04 MB. mediainfo
zeigt, dass die neue Datei eine Bitrate von nur 1164 kb/s hat. Obwohl eines wesentlich kleiner ist als das andere, sehen beide Videos identisch aus (beide haben einen VMAF-Score von über 97 im Vergleich zur unkomprimierten Version).
Wählt es die libx265
Bitrate intelligent und reduziert dadurch die Videogröße deutlich?
Antwort1
DuWillehaben beim erneuten Kodieren Daten verloren, unabhängig von der wahrgenommenen „Qualität“. Das ist einer der Gründe für die Größenreduzierung. Kleinere oder nicht wahrnehmbare Details gehen verloren oder werden durch die Algorithmen des Kompressors angenähert.
Der größte Unterschied wird jedoch darin bestehen, dass Adobe und andere ffmpeg
unterschiedliche Standardeinstellungen für Qualität und Bandbreite haben. Dass der „VMAF-Score“ ähnlich aussieht, zeigt lediglich, dass ein Mensch wahrscheinlich keinen Unterschied sehen wird, nicht, wie viele Daten verloren gegangen sind.
ffmpeg
dekodiert Frames und kodiert sie neu, wobei die Standardeinstellungen verwendet werden. Die Wahrscheinlichkeit ist groß, dass die Standardeinstellungen aggressiv sind undhttps://trac.ffmpeg.org/wiki/Encode/H.265Es wird standardmäßig das medium
Qualitätsprofil verwendet.
Die Standardeinstellung ist „mittel“. Die Vorgabe bestimmt die Komprimierungseffizienz und beeinflusst somit die Kodierungsgeschwindigkeit. Gültige Voreinstellungen sind
ultrafast
,superfast
,veryfast
,faster
,fast
, ,medium
,slow
,slower
,veryslow
, undplacebo
. Verwenden Sie die langsamste Vorgabe, für die Sie Geduld haben. Ignorieren Sie diese Vorgabe,placebo
da sie nur unbedeutende Ergebnisse bei deutlicher Erhöhung der Kodierungszeit liefert.
Bei langsameren Komprimierungseinstellungen bleibt die ursprüngliche Qualität besser erhalten, allerdings sind die Dateien größer und die Komprimierungszeit länger.
ffmpeg
wird auch standardmäßig ein CRF von 28 verwendet, was eine relativ hohe Komprimierung darstellt
Wählen Sie ein CRF. CRF beeinflusst die Qualität. Der Standardwert ist 28 und sollte optisch dem libx264-Video bei CRF 23 entsprechen.
Es ist sogar möglich, dass ffmpeg
einige erweiterte Komprimierungsfunktionen standardmäßig aktiviert sind. Adobe verzichtet möglicherweise auf einige Funktionen zur Codierungsannäherung zugunsten höherer Bitraten, um die Renderzeit zu verkürzen oder die Qualität oder andere Funktionen beizubehalten. Dies lässt sich nur schwer sagen, ohne genau zu wissen, welche Einstellungen verwendet werden.
Wenn Sie einen fairen Vergleich zwischen Adobe und den Ausgaben haben möchten, ffmpeg
sollten Sie in ein unkomprimiertes Format rendern, genau herausfinden, welche Einstellungen Adobe verwendet, und das dann komprimierenunkomprimiertDatei in beiden.
Das erneute Komprimieren einer bereits komprimierten Datei (Dekodieren und erneutes Kodieren) führt zuGenerationsverlustwas zwar bei einem einzigen Durchgang nicht signifikant aussieht, aber Daten und Qualität einbüßt. Nach mehreren Durchgängen ist der VerlustWillevon Bedeutung sein.
Antwort2
VMAFist für sehr hochwertige Kodierungen überhaupt kein gutes Maß. Selbst wenn Sie mathematisch identische Inhalte vergleichen, können Sie manchmal VMAF-Werte von nur etwa 97,4 erhalten, während nicht einmal VMAF 100 visuelle Transparenz garantiert.
Das bedeutet, dass VMAF-Werte fast nichts über die Qualität dieser spezifischen Kodierungen aussagen.
Zu dieser Zeit wäre die beste visuelle Metrik, die für nahezu transparente Videos geeignet wäre, eine Standbildmetrik wieButterauglioder SSIMULACRA.