Bitte warten...

FFmpeg

(quelloffen, Version 4.4.2 unter Linux Mint 21)

Logo: FFmpegFFmpeg 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 Icon: Help

Zusätzlich sind folgende Pakete nützlich:

sudo apt-get install libavcodec-dev libavformat-dev

Installation per apturl Icon: Help

WinFF

(quelloffen, Version 1.5.5 unter Linux Mint 21)

Die letzte Veröffentlichung ist aus dem Jahr 2013. Paket-Status

Das grafische Frontend WinFF (GitHub) lässt sich einfach aus den Paketquellen installieren:

sudo apt-get install winff

Installation per apturl Icon: Help

Anschließend steht es unter ► Multimedia ► WinFF zur Verfügung (ggf. nach Neuanmeldung).

HandBrake

(quelloffen, Version 1.5.1 unter Linux Mint 21)

Das grafische Frontend HandBrake (GitHub) lässt sich ebenfalls aus den Paketquellen installieren:

sudo apt-get install handbrake

Installation per apturl Icon: Help

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

D=bvt8000+bat8000

Daraus folgt:

bv=8000Dtba ba=8000Dtbv

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.

bv=80007001800128=2983kbit/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:

Code kopieren
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.

Code kopieren
#!/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).