Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Das FFmpeg-Projekt
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.
Das Libav-Projekt 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
verwendet werden, und unterstützt derzeit bis auf einige Ausnahmen (Stand: August 2012) die gleichen Formate und Codecs
. 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).
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.)
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
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.
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)
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)
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
Aufgrund der Tatsache, dass FFmpeg im Terminal ausgeführt wird, ist es möglich, mehrere Dateien zu verarbeiten ("Stapelverarbeitung").
ffmpeg [allgemeine Optionen] [[Eingabeoptionen][-i Eingabedatei]]... {[Ausgabeoptionen] Ausgabedatei}...
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 |
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 |
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
Wer die Bedienung mithilfe der Kommandozeile scheut und mit eingeschränktem Funktionsumfang leben kann, sollte eine der folgenden grafischen Oberflächen installieren:
Noch mehr Hilfe gibt es in der Manpage zu FFmpeg, in der offiziellen Dokumentation und mit der Kommandozeilenoption "-h".
Intern:
Videodateien umwandeln Übersichtsseite
Audiodateien umwandeln Übersichtsseite
FFmpeg/Kompilieren - Selbst Kompilieren
Extern:
FFmpeg im französischen Ubuntu-Wiki
FFmpeg - Wikipedia
FFmpeg Little Helper - Befehlsgenerator