Beispielcode zum Konvertieren von Videos mit der ffmpeg-Befehlszeile

Beispielcode zum Konvertieren von Videos mit der ffmpeg-Befehlszeile

Bevor Sie mit dem Haupttext dieses Artikels beginnen, müssen Sie zuerst das Programm ffmpeg installieren (unter Linux muss auch die x264-Kodierung installiert sein). Direkt mit Brew auf dem Mac installieren:

brew install ffmpeg --mit-faac --mit-fdk-aac --mit-ffplay --mit-fontconfig --mit-freetype --mit-libass --mit-libbluray --mit-libcaca --mit-libsoxr --mit-libquvi --mit-frei0r --mit-libvidstab --mit-libvorbis --mit-libvpx --mit-opencore-amr --mit-openjpeg --mit-openssl --mit-opus --mit-rtmpdump --mit-schroedinger --mit-speex --mit-theroa --mit-tools --mit-x265

Nach der Installation können Sie den Befehl ffmpeg verwenden, um MP4-Dateien zu komprimieren:

ffmpeg -i MVI_7274.MOV -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k a.mp4

Die Parameter werden wie folgt erklärt (modifiziert von hier: https://vistb.net/2012/02/x264-video-compress-intro/):

-preset: Gibt die Kodierungskonfiguration an. Der x264-Kodierungsalgorithmus verfügt über viele konfigurierbare Parameter. Unterschiedliche Parameterwerte können zu sehr unterschiedlichen Kodierungsgeschwindigkeiten führen und sogar die Qualität beeinträchtigen. Um Benutzern die Mühe zu ersparen, den Algorithmus zu verstehen und anschließend Parameter manuell zu konfigurieren. x264 bietet einige voreingestellte Werte, die per Voreinstellung angegeben werden können. Die Voreinstellungen sind: ultraschnell, superschnell, sehrschnell, schneller, schnell, mittel, langsam, langsamer, sehr langsam und Placebo. Ultrafast bietet die schnellste Kodierungsgeschwindigkeit, hat aber eine niedrige Komprimierungsrate und erzeugt größere Dateien, bei Placebo ist es genau das Gegenteil. Der von x264 verwendete Standardwert ist „mittel“. Es ist zu beachten, dass die Voreinstellung hauptsächlich die Kodierungsgeschwindigkeit beeinflusst und keinen großen Einfluss auf die Qualität der kodierten Ergebnisse hat. Beim Komprimieren von HD-Filmen verwende ich normalerweise langsam oder langsamer. Wenn Ihr Computer sehr gut ist, können Sie sehr langsam verwenden, aber das bringt normalerweise keinen großen Vorteil.

-crf: Dies ist die wichtigste Option, mit der die Qualität des Ausgabevideos festgelegt wird. Der Wertebereich liegt zwischen 0 und 51, der Standardwert ist 23. Je kleiner die Zahl, desto höher die Qualität des Ausgabevideos. Diese Option wirkt sich direkt auf die Bitrate des Ausgabevideos aus. Im Allgemeinen würde ich zum Komprimieren von 480p etwa 20 verwenden, zum Komprimieren von 720p 16-18 und 1080p habe ich noch nicht ausprobiert. Persönlich denke ich, dass es unter normalen Umständen nicht notwendig ist, unter 16 zu gehen. Am besten probieren Sie mehrere Werte jeweils einige Minuten lang aus, um die endgültige Ausgabequalität und Dateigröße zu sehen und dann entsprechend Ihren Anforderungen zu wählen.

Tatsächlich gibt es auch einen Parameter wie -b 1024k, aber ich habe festgestellt, dass -b nutzlos ist, nachdem -crf gesetzt ist. Nach meinem eigenen einfachen Versuch ist die Beziehung zwischen dem CRF und der komprimierten Dateigröße eines 18 Sekunden langen 1920 x 1080-Videos, das mit 5D2 aufgenommen wurde (natürliches Licht am Nachmittag, einfaches Bild, große weiße Wände, nur eine schwarze Tür), wie folgt:

crf Dateigröße
16 54 Mio.
18 39 Mio.
20 25 Mio.
zweiundzwanzig 17 Mio.
vierundzwanzig 11 Mio.
26 7,3 Mio.
28 5,0 Mio.
30 3,6 Mio.
32 2,7 Mio.
Standard 14M (CRF ist 23)

Ich habe die Videoqualität bei einem CRF-Wert von 20, 28 und 32 verglichen und festgestellt, dass die Qualität bei 32 immer noch abnahm. 20 ist zwar sehr gut, aber der Unterschied zwischen 28 und 20 ist nicht so groß. Es ist besser, den CRF-Wert zwischen 26 und 28 einzustellen. Wenn Sie Anforderungen an die Größe haben, können Sie es so lassen und den Standardwert (wahrscheinlich 31) verwenden.

Darüber hinaus beziehen sich langsam und schnell in Bezug auf die Voreinstellung nur auf die Laufzeit. Die Laufzeit von langsam ist viel länger als die von schnell. Die von langsam erzeugte MP4-Datei ist kleiner (12 MB) und die von schnell erzeugte Datei ist größer (14 MB), aber der Unterschied in der Videoqualität ist nicht offensichtlich.

Wenn die ursprüngliche Videogröße von 1920 x 1080 auf 960 x 540 reduziert wird, beträgt die Videogröße:

crf Dateigröße
16 11 Mio.
18 6,7 Mio.
20 4,4 Mio.
zweiundzwanzig 3,0 Mio.
vierundzwanzig 2,1 Mio.
26 1,6 Mio.
28 1,3 Mio.
30 1,1 Mio.
32 893.000
Standard 2,5 M (CRF ist 23)

Zusammenfassend lässt sich sagen: Wenn Sie höhere Anforderungen an die Qualität haben, wählen Sie 22 oder weniger; wenn Sie sehr hohe Anforderungen an die Größe haben, wählen Sie 26 (die Qualität wird dann aber tatsächlich etwas schlechter sein), ansonsten ist 24 kostengünstiger (oder die Standardeinstellung 23 ist auch in Ordnung) und wenn Sie sehr, sehr hohe Anforderungen an die Größe haben, wählen Sie 28 oder mehr.

Nachtrag (von @gghyoo)

Sie können -threads n verwenden, um Multithread-Operationen zu implementieren und Multi-Core-CPUs voll auszunutzen

Hier sind einige Beispiele:

ffmpeg -threads 2 -crf 20 -y -i ML-02.avi -strict experimental ML-02.mp4

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Code zum Abrufen der Miniaturansicht und Videozeit von FLV-Videos mit Ffmpeg
  • Detaillierte Erläuterung des Prozesses zum Erstellen eines Streaming-Media-Servers mit nginx und ffmpeg
  • Detailliertes Tutorial zum Kompilieren der FFmpeg-Dekodierungsbibliothek für Android Studio unter Mac OS
  • Detaillierte Beschreibung der chinesischen ffmpeg-Parameter
  • Chinesische Parameterbeschreibung und Verwendungsbeispiele für ffmpeg
  • Grafisches Tutorial zur Installation von FFmpeg auf dem MAC

<<:  MySQL implementiert Beispielcode, um doppelte Hinzufügungen beim Hinzufügen eines Einkaufswagens zu verhindern

>>:  Detaillierte Erklärung, wie CocosCreator-Systemereignisse generiert und ausgelöst werden

Artikel empfehlen

VUE Erste Schritte Erlernen der Ereignisbehandlung

Inhaltsverzeichnis 1. Funktionsbindung 2. Mit Par...

So überwachen Sie globale Variablen im WeChat-Applet

Ich bin kürzlich bei der Arbeit auf ein Problem g...

Lösung zur Schnittstellenverformung beim Einstellen der Frameset-Höhe

Derzeit habe ich ein Projekt erstellt, die Schnitt...

Analyse des Implementierungsprozesses für die Tomcat maxPostSize-Einstellung

1. Warum maxPostSize festlegen? Der Tomcat-Contai...

Detaillierte Schritte zur Installation von mysql5.7.18 auf dem Mac

1. Werkzeuge Wir benötigen jetzt zwei Tools: MySQ...

Muss MySql ein Commit durchführen?

Ob MySQL bei der Ausführung von Vorgängen wie Ein...

Eine detaillierte Einführung in for/of, for/in in JavaScript

Inhaltsverzeichnis In JavaScript gibt es mehrere ...

Konvertierung von virtuellem Dom in reales Dom mit Vue

Es gibt eine andere Baumstruktur Javascript-Objek...

Eine Liste der Fallstricke beim regulären JS-Matching

Ich habe vor Kurzem eine Falle bei der regulären ...

Methoden und Probleme zum Festlegen des HTML-Zeilenabstands

Um den Zeilenabstand von <p></p> festz...