FFmpeg enthält keine textdateibasierten Vorgaben und Profile mehr für libx264, dh das, was Sie mit dieser -vpre
Option verwendet haben. Diese wurden für den Zugriff auf die aktuellen x264 Presets, Profile (und Melodien) abgeschrieben und entfernt mit der -preset
, -profile:v
und -tune
Optionen. Die alten Textdateien emulierten nur die offiziellen x264-Vorgaben und -Profile und konnten aufgrund verschiedener Einschränkungen nicht die volle Funktionalität bieten, die das neue System bietet. Es ist auch viel einfacher zu pflegen.
Darüber hinaus haben viele Encoder ihre eigenen Optionen. auch "private optionen" genannt. Sie müssen die Audio- und Video- Encoder-Optionen für gängige Codecs in der FFmpeg-Online-Dokumentation prüfen oder die Ausgabe von überprüfen, ffmpeg -h full
um eine vollständige Liste der unterstützten Optionen zu erhalten. Beispielsweise listet x264 seine Optionen libx264 AVOptions
in der vollständigen Hilfeausgabe unter auf.
Wenn Ihr ffmpeg unterstützt, sollten -preset
keine Textdatei-Voreinstellungen verwendet werden, und FFmpeg wird nur mit einigen nicht standardmäßigen iPod-Voreinstellungen geliefert. Es ist ein weit verbreitetes Missverständnis, dass Textvorgaben einfach von überall kopiert und mit jedem ffmpeg verwendet werden können. Dies ist falsch und führt zum Bruch.
Grundsätzlich haben Sie mit den Voreinstellungen die folgenden Möglichkeiten:
Qualität kontrollieren
Die Qualität wird entweder durch Angabe einer Bitrate -b:v
(für Video) oder -b:a
(für Audio) oder durch Angabe einer anderen vom Codec unterstützten Codierungsmethode gesteuert .
Für x264 gibt es verschiedene Codierungsmethoden, wobei die Constant Rate Factor- Methode die ausgefeilteste ist. Das Ergebnis ist eine variable Bitrate, aber insgesamt eine gute Qualität in einem einzigen Durchgang. CRF-Werte reichen von 0 bis 51, aber je nach Quelle und gewünschter Qualität liegen die Werte zwischen 19 und 26. 23 ist die Standardeinstellung, daher können Sie beispielsweise 18 für "hohe Qualität" und 28 für "niedrige Qualität" auswählen, was auch immer dies für Sie bedeutet.
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
x264 verfügt auch über andere Codierungsmethoden , die hier jedoch nicht berücksichtigt werden.
Diese Profile definieren einen Funktionssatz, den der Encoder verwenden kann, um die Funktionen eines bestimmten Decoders abzugleichen. Verwenden Sie im aktuellen FFmpeg die folgende Syntax, um ein Profil anzugeben, in dem sich das Profil befinden könnte baseline
, main
oder high
:
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
Weitere Informationen und wann Sie welches Profil verwenden sollten, finden Sie unter: Was sind die Unterschiede zwischen H.264-Profilen?
Wählen Sie eine x264-Codierung preset
Diese Voreinstellungen wirken sich auf die Codierungsgeschwindigkeit aus. Wenn Sie eine langsamere Voreinstellung verwenden, erhalten Sie eine bessere Komprimierung oder Qualität pro Dateigröße, während schnellere Voreinstellungen eine schlechtere Komprimierung bewirken. Im Allgemeinen sollten Sie nur das Preset verwenden, auf das Sie warten müssen. Presets kann sein ultrafast
, superfast
, veryfast
, faster
, fast
, medium
(Standard), slow
und veryslow
. Hier ist ein Beispiel:
ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4
Codiere verlustfreies Video
Dies ist möglich, indem Sie eine CRF von 0 angeben. Verwenden Sie dazu einfach -crf 0
:
ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4
Lassen Sie uns zum Schluss noch kurz über ProRes sprechen. ProRes akzeptiert entweder eine feste Bitrate mit -b:v
oder Sie können das Profil angeben, das ein Wert zwischen 0 und 3 sein sollte , wobei die Bitraten entsprechend dem Profil gewählt werden. Höher heißt besser:
ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov
Das ffmbc-Wiki schlägt vor, dass Namen von Profilen verwendet werden können - dies schlägt jedoch in FFmpeg 1.0 fehl.
ffmpeg -i input.mp4 -c:v libx264 output.mp4
? crf: 23 und voreingestellt: mittel?Ich habe einen Test durchgeführt, bei dem ich
.mp4
ein qualitativ hochwertiges Video von einem Sony-Camcorder mit der libx264-Codierung transcodiert und dabei den gesamten Bereich der voreingestellten Werte (außer Placebo) auf einen Bereich von CRF-Werten (18, 21, 24 und 27) angewendet habe ). Ich wollte wissen, was mir die beste Kombination aus Codierungsgeschwindigkeit, Ausgabequalität und Dateigröße bietet.Für jeden CRF-Wert habe ich jeder Transkodierungsoperation eine Punktzahl für ihre Kodierungszeit gegeben (z. B. für CRF = 18 erhielt die ultraschnelle Zeit von 5,7 Sekunden eine Punktzahl von 1,0, die veryslowsche Zeit von 162 Sekunden erhielt mit allen eine 0) andere Punkte dazwischen skaliert). Ich habe die Punktzahl für die Ausgabedatei ähnlich berechnet, wobei natürlich die kleinste Datei die beste Punktzahl hat. Ich habe dann die beiden Punkte für eine "kombinierte" Geschwindigkeits- / Größenbewertung addiert.
Für jeden der vier CRF-Werte war die Voreinstellung "Sehr schnell" der zweifelsfreie Gewinner mit nahezu perfekten Ergebnissen von 1,94 (für CRF 18 und 21), 1,96 (CRF 24) und 1,97 (CRF 27). Ich finde es sehr merkwürdig, dass "sehr schnell" jedes Mal fast die kleinste Dateigröße produzierte , nur gegen "sehr langsam" und niemals gegen viel.
Ein Unterschied zwischen den verschiedenen voreingestellten Werten war, dass das Betriebssystem (Windows 7) mir unterschiedliche Thumbnails geben würde. Die schnelleren Voreinstellungen zeigen mehrere Sekunden lang eine Miniaturansicht im Video, wobei die Miniaturansichten für die langsameren Voreinstellungen die Anfangsbilder des Videos widerspiegeln. Das ist für mich nicht wichtig; Was ich gelernt habe war, dass "-preset veryfast" eine einfache Wahl zu sein scheint.
Hier sind meine Ergebnisse (als Momentaufnahme einer Excel-Tabelle):
Hier ist die Excel-Tabelle als CSV-Text:
quelle