Logo - 5.120 Bytes

H.264 MPEG-4-AVC Video Encoding by websmith®

Video Encoding Streaming:
  • H.264 MPEG-4-AVC Encoding
  • Flash HD Video Streaming
  • H.264/x264 Video Encoding

Freie Encoding Software FFmpeg für hochauflösende H.264 MPEG-4-AVC Web Videos einsetzen. Schritt-für-Schritt Anleitung um FFmpeg Encoder für H.264/x264 Webvideos unter Linux zu verwenden. FFmpeg Parameter verständlich erklärt.

Encoding Praxis - Videos encoden mit Linux (Kommandozeile)

Videos erstellen mit FFmpeg

Das FFmpeg-Paket besteht aus einer Reihe von freien Computerprogrammen und Programmbibliotheken, welche digitales Video- und Audiomaterial aufnehmen, konvertieren, senden (streamen) und in verschiedene Containerformate verpacken können. Unter anderem enthält es eine Sammlung unterschiedlicher Audio-/Videoencoder und Decoder. Sie befinden sich in der libavcodec.

FFmpeg ist ein Kommandozeilenprogramm, um von einem Video-, Audio- oder Bildformat zu einem anderen zu konvertieren. Es unterstützt auch das Aufnehmen und Kodieren von einer TV-Karte in Echtzeit. FFserver ist ein HTTP-Multimedia-Streaming-Server für Livestreaming über das Internet. Libavcodec enthält alle FFmpeg Audio- und Videoencoder. Diese Bibliothek kann von anderen Programmen benutzt werden, um dann die Filme darzustellen. Libavformat enthält die Container-Parser und -Ersteller für alle herkömmlichen Audio- und Video Containerformate (z.B. avi, mov, mkv, ogg).

Das FFmpeg-Paket kann kostenfrei auf der Webseite des FFmpeg Projekts bezogen werden. Wir werden in diesem Artikel nicht auf die Installation und Konfiguration von FFmpeg eingehen, da es den Rahmen des Tutorials sprengen würde. Wir bitten um Ihr Verständnis, und werden gegebenenfalls ein weiteres Tutorial nachreichen.

x264 Unterstützung vorhanden ?

Stellen Sie sicher, daß der x264 Codec, beziehungsweise die Bibliothek(en) libx264.so.X auf Ihrem System installiert sind,bevor Sie mit der Installation von FFmpeg fortfahren. Führen Sie nach der Installation von FFmpeg den Befehl ffmpeg --formats aus, um zu prüfen ob der FFmpeg Encoder in der Lage ist den x264 Codec zu benutzen. Sie sollen eine Bildschirmausgabe sehen wie:

FFmpeg version xxx, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --enable-libx264 --enable-gpl --enable-libfaac
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on xxx xxx, gcc: 4.3.1 (SUSE Linux)
File formats:
E mp4 mp4 format
Codecs:
EA libfaac
EV libx264

Anmerkung: E steht für Encoding, D steht für Decoding, V steht für Video und A für Audio. Achten Sie auf die Konfigurationszeile: --enable-libx264 und kontrollieren Sie ob bei der Codec Sektion bei libx264 der Buchstabe E für Encoding steht.

Wenn dies nicht der Fall ist, wurde der x264 Codec nicht richtig erkannt und der FFmpeg Encoder kann damit nicht umgehen. Der am häufigsten begangene Fehler ist, daß die Bibliothek libx264.so.X nicht dynamisch, sondern statisch installiert wurde. Verwenden Sie bei dessen Installation immer den Zusatzparameter --enable-shared.

Wir möchten nun als Beispiel ein webfähiges Video mit den Einstellungen der unten gezeigten Tabelle mit FFmpeg umwandeln. Wechseln Sie auf die Kommandozeile oder öffnen Sie ein Terminalfenster. Begeben Sie sich in das Installationsverzeichnis von FFmpeg. Sehr häufig ist FFmpeg unter: /usr/local/bin installiert.

Mit dem nachfolgenden Parametern und Einstellungen sollten Sie in der Lage sein, eine mp4 Datei mit dem x264 Videocodec und dem faac Audiocodec zu erstellen. Zunächst schaffen wir Ihnen eine Übersicht der globalen Parameter wie Videocodec und Audiocodec, Bitraten und Container. Die FFmpeg Parameter werden pärchenweise -PARAMETER WERT in der Kommandozeile eingegeben:

Globale Einstellungen und FFmpeg Parameter

Bezeichnung FFmpeg Parameter Wert (Beispiel)
Videocodec -vcodec libx264
H.264 Level -level 1.2
Videobitrate -b 128 kb/s
Bilder (Frames) pro Sekunde -r 25
Videobitrate Toleranz -bt 144 kb/s
Videocontainer -f mp4
Videogröße -s 240x192
Audiocodec -acodec libfaac
Audiobitrate -ab 56 kb/s
Audiofrequenz -ar 48000
Audiokanäle --- 2 - Stereo

Nun geht es darum, die H.264 Einstellungen des FFmpeg Encoder zu parametrisieren. Da Qualität immer im Auge des Betrachters liegt, möchten wir Ihnen hier nur eine grundsätzliche Empfehlung abgeben. Das Feintuning können wir Ihnen nicht abnehmen. Da hilft nur probieren, probieren, probieren.

H.264 Einstellungen und FFmpeg Parameter für normale Qualität

FFmpeg Parameter Wert (Beispiel)
-coder 1
-flags +loop
-cmp +chroma
-partitions +parti8x8+parti4x4+partp8x8+partb8x8
-me_method hex
-subq 7
-me_range 16
-g 250
-keyint_min 25
-sc_threshold 40
-i_qfactor 0.71
-b_strategy 1
-qcomp 0.6
-qmin 10
-qmax 51
-qdiff 4
-bf 2
-refs 1
-directpred 1
-trellis 0
-flags2 +bpyramid+wpred+dct8x8+fastpskip

Hier sehen Sie nun den vollständigen Linux Befehl für FFmpeg, normale Qualität:

ffmpeg -i INPUT.avi -vcodec libx264 -level 12 -b 128kb/s -r 25 -bt 144kb/s -s 240x192 -coder 1 -flags +loop -cmp +chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method hex -subq 7 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 2 -refs 1 -directpred 1 -trellis 0 -flags2 +bpyramid+wpred+dct8x8+fastpskip -f mp4 -acodec libfaac -ab 56kb/s -ac 2 -ar 48000 OUTPUT.mp4

Die folgenden Parameter reizen die maximale Leistung des FFmpeg Encoder und x264 erst so richtig aus. Bedenken Sie, dass die Umwandlung eines längeren Films mit diesen Einstellungen auch auf einem Computer mit Mehrkernprozessor(en) mehrere Stunden in Anspruch nehmen kann.

H.264 Einstellungen und FFmpeg Parameter für hohe Qualität

FFmpeg Parameter Wert(Beispiel)
-coder 1
-flags +loop
-cmp +chroma
-partitions +parti8x8+parti4x4+partp8x8+partb8x8
-me_method full
-subq 7
-me_range 23
-g 250
-keyint_min 25
-sc_threshold 40
-i_qfactor 0.71
-b_strategy 1
-qcomp 0.6
-qmin 10
-qmax 51
-qdiff 4
-bf 16
-bidir_refine 1
-refs 6
-directpred 2
-trellis 1
-flags2 +bpyramid+wpred+mixed_refs+dct8x8+fastpskip

Hier sehen Sie den vollständigen Linux Befehl für FFmpeg, hohe Qualität:

ffmpeg -i INPUT.avi -vcodec libx264 -level 12 -b 128kb/s -r 25 -bt 144kb/s -s 240x192 -coder 1 -flags +loop -cmp +chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method full -subq 7 -me_range 23 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 16 -refs 6 -directpred 2 -trellis 1 -flags2 +bpyramid+wpred+mixed_refs+dct8x8+fastpskip -f mp4 -acodec libfaac -ab 56kb/s -ac 2 -ar 48000 OUTPUT.mp4

Wenn Sie Ihr Wissen vertiefen möchten oder weitere Informationen benötigen lesen Sie die Manual Pages bzw. geben Sie in der Kommandozeile den folgenden Befehl ein: ffmpeg --help. Wenn Sie FFmpeg über YAST oder eine weitere Paketverwaltungssoftware installiert haben, erhalten Sie die Hilfe durch Eingabe des Befehls: man ffmpeg. Die Projektseite von FFmpeg beinhaltet auch eine ausführliche Dokumentation mit vielen praxisbezogenen Beispielen, Tipps und hilfreichen Parametern zur Qualitätsoptimierung des H.264/x264 AVC Encodings.

» weiter […]

© 2009 Codecasters GmbH – MPEG-4-AVC-Encoding (H.264) – professionelles H.264 / X264 Video Encoding & Streaming – Video on Demand aus Rosenheim