FFmpeg
(quelloffen, Version 6.1.1 unter Linux Mint 22)
FFmpeg ist ein Kommandozeilen-Werkzeug zur vielseitigen Bearbeitung von Video- und Audio-Dateien. Es ist nicht in Linux Mint vorinstalliert. Es existieren grafische Frontends für das Programm, wie z. B. WinFF oder HandBrake.
Installation aus den offiziellen Paketquellen:
sudo apt-get install ffmpeg
Installation per apturl
Zusätzlich sind folgende Pakete nützlich:
sudo apt-get install libavcodec-dev libavformat-dev
Installation per apturl
WinFF
(quelloffen, Version 1.6.3 unter Linux Mint 22)
Das grafische Frontend WinFF (GitHub) lässt sich einfach aus den Paketquellen installieren:
sudo apt-get install winff
Installation per apturl
Anschließend steht es unter ► Multimedia ► WinFF zur Verfügung (ggf. nach Neuanmeldung).
HandBrake
(quelloffen, Version 1.7.2 unter Linux Mint 22)
Installationen, die nicht über die offiziellen Paketquellen erfolgen, stellen unter Umständen ein Sicherheitsrisiko für den verwendeten Rechner dar. ► Weitere Informationen
Das grafische Frontend HandBrake (GitHub) lässt sich ebenfalls aus den Paketquellen installieren:
sudo apt-get install handbrake
Installation per apturl
Installation als Flatpak: (Version 1.8.1)
flatpak install flathub fr.handbrake.ghb
Download flatpakref Flathub
Anschließend steht es unter ► Multimedia ► HandBrake zur Verfügung.
Berechnung der Bitrate für Video-Kodierung
Die Größe der Videodatei hängt vor allem von der Bitrate ab, mit der das Video enkodiert wurde. Mit der folgenden Formel lässt sich die nötige Bitrate für das Video anhand der Audiobitrate und der gewünschten Endgröße errechnen:
D = gewünschte Dateigröße in Megabyte
t = Spieldauer des Videos in Sekunden
bv = Bitrate der Video-Kodierung in Kilobit pro Sekunde [kbit/s]
ba = Bitrate der Audio-Kodierung in Kilobit pro Sekunde [kbit/s]
1 MB = 8000 kbit
Daraus folgt:
Beispiel:
Ein 30-minütiges (= 1800 Sekunden) Video soll bei einer Audio-Bitrate von 128 kbit/s rund 700 MB groß sein. Die Video-Bitrate beträgt knapp 3000 kbit/s.
Die Video-Bitrate kann auch mit diesem Tool berechnet werden:
Dauer des Videos:
min
sec;
Audio-Bitrate:
kbit/s;
Gewünschte Größe:
MB
Mediendatei in ein anderes Format umwandeln
Eine Stärke von FFmpeg besteht in der Fähigkeit, Video- und Audio-Dateien in ein anderes Format umzuwandeln.
Hier ein Beispiel, wie man mit FFmpeg ein QuickTime-Video (Video: H.264, Audio: AAC) nach Theora/Vorbis umgewandelt:
ffmpeg -i MeinVideo.mov -vcodec libtheora -acodec libvorbis MeinVideo.ogv
Häufig macht es aber Sinn, einzelne Parameter explizit anzugeben, wobei man sich an den Werten der Ausgabe von ffprobe MeinVideo.mov
orientieren sollte. Die wichtigsten dabei sind folgende:
-vcodec Video-Codec
-b:v Video-Bitrate in Bits pro Sekunde
-r Frames pro Sekunde
-acodec Audio-Codec
-b:a Audio-Bitrate in Bits pro Sekunde
-ar Abtastrate in Hertz
-ac Zahl der Kanäle (Mono/Stereo)
Beispielsweise so:
ffmpeg -i MeinVideo.mov -vcodec libtheora -b:v 705000 -r 30 -acodec libvorbis -b:a 96000 -ar 44100 -ac 1 MeinVideo.ogv
In gleicher Weise können reine Audio-Dateien in ein anderes Format umgewandelt werden:
ffmpeg -i MeinAudio.ogg -acodec libmp3lame MeinAudio2.mp3
ffmpeg -i MeinAudio.m4a -acodec libvorbis MeinAudio.ogg
ffmpeg -i MeinAudio.mp3 -acodec aac MeinAudio.aac
ffmpeg -i MeinAudio.wav -acodec flac MeinAudio.flac
Unter Umständen wird die Datei dann aber mit maximaler Bitrate kodiert, was zu übermäßig großen Dateien führen kann. Daher macht es oft mehr Sinn, bei der Kodierung auch eine realistische Bitrate mit anzugeben:
ffmpeg -i MeinAudio.m4a -acodec libvorbis -b:a 128000 MeinAudio2.ogg
Video rotieren
Mit FFmpeg ist es auch möglich, ein Video zu rotieren. Folgende Beispiele rotieren das Video MeinVideo.mov um 90° im Uhrzeigersinn, um 90° gegen den Uhrzeigersinn und um 180°:
ffmpeg -i MeinVideo.mov -vf transpose=clock MeinVideo_rotiert.mov
ffmpeg -i MeinVideo.mov -vf transpose=cclock MeinVideo_rotiert.mov
ffmpeg -i MeinVideo.mov -vf transpose=clock,transpose=clock MeinVideo_rotiert.mov
Siehe auch hier.
Audio aus Video-Datei extrahieren
Möchte man den Audio-Stream aus einer Video-Datei extrahieren und soll das Audioformat dabei erhalten bleiben, so muss man zunächst prüfen, in welchem Format der Audio-Inhalt gespeichert ist. Dazu verwendet man im Verzeichnis der Video-Datei folgenden Befehl (der Name der Video-Datei ist anzupassen):
ffprobe MeinVideo.mp4
In der Ausgabe findet man dann eine Zeile ähnlich der folgenden:
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
In diesem Fall ist das Audio-Format also AAC. Eine Umwandlung in ein anderes Format ist in der Regel mit Verlusten verbunden und sollte nur erfolgen, falls ein verwendetes Ausgabegerät bzw. eine Software das ursprüngliche Format nicht unterstützt. Der folgende Befehl extrahiert nun den Audio-Stream unter Beibehaltung des Formats:
ffmpeg -i MeinVideo.mp4 -vn -acodec copy MeinAudio.aac
Für andere Formate muss der Audiocodec explizit angegeben werden. Hier beispielsweise für MP3, Vorbis oder FLAC:
ffmpeg -i MeinVideo.mp4 -vn -acodec libmp3lame MeinAudio.mp3
ffmpeg -i MeinVideo.mp4 -vn -acodec libvorbis MeinAudio.ogg
ffmpeg -i MeinVideo.mp4 -vn -acodec flac MeinAudio.flac
Welche Codecs zur Verfügung stehen, erfährt man mit diesem Befehl:
ffmpeg -codecs
Audio-Datei in einzelne Tracks zerlegen
Möchte man eine Audio-Datei in einzelne Tracks zerlegen, beispielsweise weil man ein Musik-Album in einer einzigen Datei vorliegen hat, kann man den Start- und Endzeitpunkt des gewünschten Ausschnitts angeben:
ffmpeg -i "FullAlbum.m4a" -acodec copy -y -ss 0:10:25.5 -to 0:16:12 "SingleTrack.m4a"
Nach der Option -ss wird der Startzeitpunkt angegeben und nach der Option -to der Endzeitpunkt, hier im Format hh:mm:ss, wobei Sekunden mit Dezimalstelle angegeben werden können. Die Schnittpunkte können beispielsweise mit Audacity bestimmt werden.
Möchte man die ganze Datei automatisiert in aufeinander folgende Tracks zerlegen, kann man sich mit einem Bash-Skript behelfen. Am besten speichert man das Skript unter dem Namen audiosplitter.sh in dem Ordner, in dem sich die zu zerlegende Datei befindet, wechselt mit cd ~/pfad/zum/ordner
in diesen Ordner und führt das Programm dort mit bash audiosplitter.sh
aus.
#!/usr/bin/bash
infile="FullAlbum.ogg" # Name der Audio-Datei, die zerlegt werden soll
ext="ogg" # Dateiendung der Ausgabe-Dateien
cuts=( # Zeitpunkte der Schnitte
0:0:0
0:3:56.5
0:7:12.5
0:11:51.5
0:16:9
0:22:0
0:25:33
0:30:22.5
0:35:28
0:40:55.5
0:45:20
)
titles=( # Titel für die Namen der Ausgabe-Dateien
"The Cutter"
"Back of Love"
"My White Devil"
"Clay"
"Porcupine"
"Heads Will Roll"
"Ripeness"
"Higher Hell"
"Gods Will Be Gods"
"In Bluer Skies"
)
for ((i=0; i < ${#cuts[@]} - 1; i++)); do
start=${cuts[i]}
end=${cuts[i + 1]}
(($i < 9)) && pad="0" || pad=""
track=$(($i + 1))
outfile="${pad}${track} ${titles[i]}.${ext}"
ffmpeg -hide_banner -i "${infile}" -acodec copy -y -ss ${start} -to ${end} "${outfile}"
done
VOB-Dateien nach MPEG konvertieren.
Videomaterial aus DVDs, die beispielsweise mit dvdbackup gerippt wurden, liegt in der Regel als eine Anzahl von Dateien im VOB-Format vor. Diese können zum Abspielen mit FFmpeg bequem in eine einzige Datei konvertiert werden, wobei allerdings die besonderen Merkmale einer DVD wie Menüs und Sprachauswahl verloren gehen.
Folgendes Kommando führt die einzelnen VOB-Dateien zunächst mit concat zusammen und packt sie dann in einen MPEG-Container. Dazu muss man sich im Terminal in dem Verzeichnis mit den VOB-Dateien befinden (Video_TS):
cd ~/Video/DasLebenDesBrian/Video_TS
ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB|VTS_01_4.VOB|VTS_01_5.VOB" -map 0:a:1 -map 0:v -f mpeg -c copy output.mpeg
Da es bei einer DVD häufig eine Sprachauswahl gibt, muss der entsprechende Audio-Stream in dem Kommando mit der Option -map explizit angegeben werden. In diesem Fall ist es der Stream mit dem Index 1 (0:a:1). Existiert nur ein einziger Video-Stream, muss der Index nicht angegeben werden (0:v).