ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

FFmpeg

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

ffmpeg-logo-neu.png Das FFmpeg-Projekt {en} besteht aus einer Reihe von Programmen und Bibliotheken, die es ermöglichen, Video- und Audiodaten aufzunehmen, zu konvertieren, ins Netzwerk zu übertragen (streamen) und abzuspielen. So enthält es unter anderem mit libavcodec eine hoch entwickelte Codec-Zusammenstellung.

Ab Ubuntu 12.04 wird FFmpeg nur noch aus Gründen der Kompatibilität zur Verfügung gestellt und in zukünftigen Versionen ganz entfernt werden. Es ist deshalb angeraten, stattdessen avconv des Libav-Projekts zu nutzen.

Libav

Das Libav-Projekt {en} ist eine Abspaltung von FFmpeg und wurde im Januar 2011 ins Leben gerufen, da ein Teil der Entwickler mit der Projektleitung unzufrieden war. Der Funktionsumfang ist größtenteils identisch zu FFmpeg, es kann von den gleichen Anwendungen {en} verwendet werden, und unterstützt derzeit bis auf einige Ausnahmen (Stand: August 2012) die gleichen Formate und Codecs {en}. Ein Großteil der Änderungen, die an Libav vorgenommen werden, fließen ebenfalls bei FFmpeg ein (vor allem, um die ABI-Kompatibilität zu wahren).

Komponenten

Das Projekt besteht aus folgenden Komponenten, die alle im Terminal [2] ausgeführt werden:

  • ffmpeg ist ein Kommandozeilenprogramm, um von einem Video-, Audio- oder Bild-Format zu einem anderen zu konvertieren. Es unterstützt auch das Aufnehmen und Enkodieren von einer TV-Karte in Echtzeit. Dieser Artikel behandelt größtenteils dieses Programm.
    avconv ist das Pendant des Libav-Projektes. Die Parameter sind in weiten Teilen identisch. ffmpeg erlaubt manchmal weitere alternative Schreibweisen für diverse Parameter.

  • ffserver (avserver) ist ein HTTP Multimedia Streamer Server für Live-Übertragungen über das Internet

  • ffplay (avplay) ist ein sehr einfacher Medienplayer für die Kommandozeile

  • ffprobe (avprobe) ist ein einfaches Befehlszeilenwerkzeug zum Analysieren von Multimedia-Streams

  • libavcodec enthält alle ffmpeg Audio- und Video-Encoder bzw. -Decoder. Die meisten Codecs wurden von Grund auf neu geschrieben, um die beste Ausführungsgeschwindigkeit sicherzustellen. Diese Bibliothek kann von anderen Programmen benutzt werden, um dann die Filme selber darzustellen.

  • libavformat enthält alle Container-Parser und -Ersteller für alle herkömmlichen Audio- und Video-Containerformate (z. B. AVI, MKV, OGG, Media etc.)

Installation

FFmpeg ist in den offiziellen Paketquellen zu finden. Ab Ubuntu 11.04 wird die Version des Libav-Projekts verwendet und kann mit folgendem Paket installiert [1] werden:

  • ffmpeg

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ffmpeg 

sudo aptitude install ffmpeg 

Ab Ubuntu 12.04 ist ffmpeg nur noch ein Übergangspaket. Stattdessen wird automatisch das Paket libav-tools installiert. Aus Kompatibilitätsgründen werden sowohl die alten als auch die neuen Befehlsaufrufe unterstützt.

zusätzliche Codecs

FFmpeg enthält einige Codecs, die patentrechtlich geschützt und zur Vermeidung von Lizenzgebühren oder einer unklaren Lizenzlage in den Paketen unterschiedlicher Ubuntu-Versionen nicht immer enthalten sind. Dies betrifft die Codecs MP3, AAC, AMR, MPEG-4 und H.264 (bzw. MPEG-4 AVC). Wer ohne diese Codecs auskommt, kann FFmpeg ganz normal aus den offiziellen Paketquellen installieren.

Für diejenigen, die auf diese Codecs nicht verzichten möchten, besteht die Möglichkeit, FFmpeg direkt aus dem Quellcode zu installieren, was im separaten Artikel FFmpeg/Kompilieren beschrieben ist. Der Quellcode kann entweder aus den Paketquellen oder - falls eine tagesaktuelle Version benötigt wird - via Git bezogen werden. Ab Ubuntu 10.04 Lucid Lynx lassen sich diese Formate einfach über die ubuntu-restricted-extras-Pakete installieren.

Ab Ubuntu 11.10:

  • libavcodec-extra-53 (multiverse)

  • libavdevice-extra-53 (multiverse)

  • libavformat-extra-53 (multiverse)

  • libavutil-extra-51 (multiverse)

  • libpostproc-extra-52 (multiverse)

  • libswscale-extra-2 (multiverse)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libavcodec-extra-53 libavdevice-extra-53 libavformat-extra-53 libavutil-extra-51 libpostproc-extra-52 libswscale-extra-2 

sudo aptitude install libavcodec-extra-53 libavdevice-extra-53 libavformat-extra-53 libavutil-extra-51 libpostproc-extra-52 libswscale-extra-2 

Von Ubuntu 10.04 bis Ubuntu 11.04:

  • libavcodec-extra-52 (multiverse)

  • libavdevice-extra-52 (multiverse)

  • libavformat-extra-52 (multiverse)

  • libavutil-extra-49 (multiverse, für Lucid)

  • libavutil-extra-50 (multiverse, erst ab Ubuntu 10.10)

  • libpostproc-extra-51 (multiverse)

  • libswscale-extra-0 (multiverse)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libavcodec-extra-52 libavdevice-extra-52 libavformat-extra-52 libavutil-extra-49 libavutil-extra-50 libpostproc-extra-51 libswscale-extra-0 

sudo aptitude install libavcodec-extra-52 libavdevice-extra-52 libavformat-extra-52 libavutil-extra-49 libavutil-extra-50 libpostproc-extra-51 libswscale-extra-0 

Benutzung

Aufgrund der Tatsache, dass FFmpeg im Terminal ausgeführt wird, ist es möglich, mehrere Dateien zu verarbeiten ("Stapelverarbeitung").

Allgemeine Syntax

ffmpeg [allgemeine Optionen] [[Eingabeoptionen][-i Eingabedatei]]... {[Ausgabeoptionen] Ausgabedatei}... 

Kommandozeilenoptionen

Folgend eine Übersicht zu den wichtigsten Kommandozeilenoptionen. Für eine vollständige Übersicht siehe ffmpeg -h oder die entsprechende Manpage.

Allgemeine Optionen
Option Bedeutung
-L Lizenz anzeigen
-h Hilfe anzeigen
-version Version anzeigen
-formats verfügbare Formate anzeigen
-codecs verfügbare Codecs anzeigen
-f FORMAT FORMAT für Ein-/Ausgabe nutzen
-threads ANZAHL ANZAHL an Threads verwenden (erhöht die Geschwindigkeit bei Mehr-Kern-Prozessoren)

Videooptionen
Option Bedeutung
-vcodec CODEC CODEC zum Dekodieren/Enkodieren nutzen, falls als Eingabe-/Ausgabeoption genutzt. copy angeben, um Stream zu kopieren
-vb BITRATE Bitrate setzen (in Bit/s)
-r FRAMERATE Framerate setzen (in Frames/Sekunde)
-s GRÖSSE Größe des Videos setzen (Breite x Höhe)
-aspect VERHÄLTNIS Seitenverhältnis setzen (z. B. 4:3 oder 16:9)
-vn Video deaktivieren

Audiooptionen
Option Parameter
-acodec CODEC CODEC zum Dekodieren/Enkodieren nutzen, falls als Eingabe-/Ausgabeoption genutzt. copy angeben, um Stream zu kopieren
-ab BITRATE Bitrate setzen (Bit/s) Beispiel: -ab 360k (ohne die Einheit geht's nicht) -> ffmpeg -i Eingangsdatei.wma -ab 360k Ausgabedatei.mp3
-ar RATE Abtastrate setzen (in Hz)
-ac KANÄLE Anzahl der Audiokanäle setzen
-vol LAUTSTÄRKE Lautstärke ändern (256 = normal) (Mit ffmpeg 0.11 wurde diese Option durch den volume-Filter ersetzt. Die neue Syntax lautet: -filter:a volume=1.0. 1.0 heißt hierbei keine Änderung.)
-an Audio deaktivieren

Map-Syntax

Die neueren FFmpeg- und Libav-Versionen unterstützen eine alternative Syntax, um mehreren Video-, Ton- und Videospuren verschiedene Optionen zuzuweisen. Hier sind ein paar Beispiele, die vollständige Erklärung findet sich in der manpage.

neue Syntax/Streamspecifier
Option Parameter
-codec: CODEC CODEC zum Dekodieren/Enkodieren von allen Spuren nutzen. -codec: copy kopiert Video-, Audio- und Untertitelstreams
-codec:a CODEC alternative Schreibweise für -acodec, alle Tonspuren werden mit diesem Codec enkodiert.
-codec:a:1 CODEC CODEC zum Enkodieren der zweiten Tonspur in der Ausgabedatei nutzen (-codec:a:0 für die erste Tonspur)
-codec:v CODEC alternative Schreibweise für -vcodec
-b:a BITRATE Bitrate für alle Tonspuren setzen (Bit/s)
-q:2 QUALITY QUALITY (z.B. für Vorbis) für die dritte Spur in der Ausgabedatei nutzen
-filter:a:0 FILTERGRAPH FILTERGRAPH auf die erste Tonspur in der Ausgabedatei anwenden (z.B. wäre, um die Lautstärke zu halbieren, der FILTERGRAPH: volume=0.5)
-filter:v FILTERGRAPH FILTERGRAPH auf alle Videospuren anwenden, alternative Schreibweise zu -vf

Des Weiteren kann sehr detailiert angegeben werden, welche Spuren der Eingangsdatei genutzt werden sollen:

map-Syntax
Option Parameter
-map 0 Verwende alle Spuren der ersten Eingangsdatei
-map 0:v Verwende nur die Videospuren der ersten Eingangsdatei
-map 1:a:4 Verwende nur die fünfte Tonspur der zweiten Eingangsdatei
-map -0:s:2 Verwende nicht den dritten Untertitel der ersten Eingangsdatei
-map 1:3 Verwende nur die vierte Spur der zweiten Eingangsdatei.

"-map"-Parameter können beliebig kombiniert werden, die Reihenfolge der map-Parameter gibt die Reihenfolge der Spuren in der Ausgabedatei an.

map-Syntax Kombination
Option Parameter
-map 0 -map -0:a:0 Verwende alle Spuren der ersten Eingangsdatei außer der ersten Audiospur
-map 0:0 -map 0:0 Verwende die erste Spur der ersten Eingangsdatei doppelt
-map 0:v -map 0:a Verwende nur die Video- und Tonspuren der ersten Eingangsdatei

x11grab

Mit FFmpeg ist es möglich, den Inhalt eines X11-Bildschirms aufzunehmen. Es gilt dabei eine veränderte Syntax:

ffmpeg -f x11grab -i [Hostname]:Display-Nummer.Bildschirm-Nummer[+X-Abstand,Y-Abstand] [Video-Optionen] Ausgabedatei 

Die Aufnahme kann mit Strg + C beendet werden.

Beispiele

  • Es ist möglich, sich einfach nur Informationen über eine Datei anzeigen zu lassen:

    ffmpeg -i EINGABEDATEI 
  • Ein Video ins MJPEG-Format umwandeln, Video-Bitrate auf 2000 kBit/s setzen:

    ffmpeg -i input.mov -vcodec mjpeg -b 2000k -acodec libmp3lame -ab 128k -ar 44100 output.avi 
  • Den Bildschirminhalt (1680x1050) mit x11-grab aufnehmen und im H.264-Format mit anderen Abmessungen (768x480) abspeichern:

    ffmpeg -f x11grab -s 1680x1050 -i :0.0 -s 840x525 -vcodec libx264 -b 4000k -vpre medium -an AUSGABEDATEI 
  • Ein(e) Multimediadatei/Video in einem von ffmpeg unterstützten Container in einen anderen ummuxen:

    ffmpeg -i INPUTDATEI -codec: copy -map 0 OUTPUTDATEI 

Grafische Oberflächen

Wer die Bedienung mithilfe der Kommandozeile scheut und mit eingeschränktem Funktionsumfang leben kann, sollte eine der folgenden grafischen Oberflächen installieren:

Mehr Hilfe

Noch mehr Hilfe gibt es in der Manpage zu FFmpeg, in der offiziellen Dokumentation {en} und mit der Kommandozeilenoption "-h".

ubuntuusers.local › WikiFFmpeg