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.

Die Software kann bequem über das Terminal installiert werden:

sudo apt-get install ffmpeg

Installation per apturl symbol: question

Zusätzlich sind folgende Pakete nützlich:

sudo apt-get install libavcodec-dev libavformat-dev

Installation per apturl symbol: question

WinFF

(quelloffen, Version 1.5.5 unter Linux Mint 21)

Die letzte Veröffentlichung ist aus dem Jahr 2013.

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

sudo apt-get install winff

Installation per apturl symbol: question

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 lässt sich ebenfalls aus den Paketquellen installieren:

sudo apt-get install handbrake

Installation per apturl symbol: question

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

Formel 17

Daraus folgt:

Formel 18 Formel 19

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.

Formel 20

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 MeinAudio2.ogg
ffmpeg -i MeinAudio.mp3 -acodec aac MeinAudio2.aac

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.mpg

In der Ausgabe findet man dann eine Zeile ähnlich der folgenden:

Stream #0:1[0x1c0]: Audio: mp2, 44100 Hz, stereo, s16p, 224 kb/s

In diesem Fall ist das Audio-Format also MP2. 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.mpg -vn -acodec copy MeinAudio.mp2

Für andere Formate muss der Audiocodec explizit angegeben werden. Hier beispielsweise für MP3, Vorbis oder AAC:

ffmpeg -i MeinVideo.mpg -vn -acodec libmp3lame MeinAudio.mp3
ffmpeg -i MeinVideo.mpg -vn -acodec libvorbis MeinAudio.ogg
ffmpeg -i MeinVideo.mpg -vn -acodec aac MeinAudio.aac

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
  1. #!/usr/bin/bash
  2. infile="FullAlbum.ogg" # Name der Audio-Datei, die zerlegt werden soll
  3. ext="ogg" # Dateiendung der Ausgabe-Dateien
  4. cuts=( # Zeitpunkte der Schnitte
  5. 0:0:0
  6. 0:3:56.5
  7. 0:7:12.5
  8. 0:11:51.5
  9. 0:16:9
  10. 0:22:0
  11. 0:25:33
  12. 0:30:22.5
  13. 0:35:28
  14. 0:40:55.5
  15. 0:45:20
  16. )
  17. titles=( # Titel für die Namen der Ausgabe-Dateien
  18. "The Cutter"
  19. "Back of Love"
  20. "My White Devil"
  21. "Clay"
  22. "Porcupine"
  23. "Heads Will Roll"
  24. "Ripeness"
  25. "Higher Hell"
  26. "Gods Will Be Gods"
  27. "In Bluer Skies"
  28. )
  29. for ((i=0; i < ${#cuts[@]} - 1; i++)); do
  30. start=${cuts[i]}
  31. end=${cuts[i + 1]}
  32. (($i < 9)) && pad="0" || pad=""
  33. track=$(($i + 1))
  34. outfile="${pad}${track} ${titles[i]}.${ext}"
  35. ffmpeg -i "${infile}" -acodec copy -y -ss ${start} -to ${end} "${outfile}"
  36. done