Blog Digitalgesellschaft Verwaltungsbetrieb Textarchiv Textarchiv Walter Kirk (✝) Impressum
Audio und Video mit FFmpeg bearbeiten
VorbemerkungVoraussetzungenFFmpegGraphische BenutzeroberflächeOrganisation und NamensregelnStandardformateAudioVideoVergleichAudioCover einfügen Bash-ScriptKombinationKombination von .aacMetadaten extrahieren und einfügenNummerierungVideoKombinationNummerierungAudio aus VideoStandbild in Video einfügenBesonderheitenTeilenDigitalisateCheckliste Audiobook und GesamtfilmZusammenfassungMindmap
Auf vielen Plattformen werden Mediendateien zum Anhören und Ansehen bereitgestellt. Es gibt heute Apps in den jeweiligen Stores, um diese Medien abzuspielen. Wer lieber offline hören und sehen möchte, ist dann allerdings gezwungen, die Medien herunter zu laden.
Die neue Audio- und Videothek der öffentlich-rechtlichen Sender (ARD-Mediathek) bietet keine RSS-Feed zum Download mit einem Podcatcher mehr an. Jedoch werden zum Beispiel für Hörbucher und -spiele auf den Seiten der Rundfunkanstalten RSS-Feed bereitgestellt.
Dabei lassen sich die sogenannten Podcatcher der eigenen Wahl für Audiodateien und das Programm Mediathekview für Videos der öffentlich-rechtlichen Sender nutzen.
Leider liegen Audio- und Videodateien nicht immer als eine Gesamtdatei vor, wenn einzelne Folgen bereitgestellt sind. Das gilt auch, wenn Audio-CD, der Download von MP3-Dateien oder Musik-Videos genutzt werden.
Mit dem mächtigen Tool FFmpeg können die Audio- und Videodateien in eine gewünschte Form übertragen werden, um zum Beispiel ein Audiobook zu erstellen bzw. eine mehrteilige Filmreihe in einer Gesamtdatei zu erhalten.
Die hier beschriebene Vorgehensweise berücksichtigt ein debian-basiertes Linux.
Die Hinweise beschreiben die Anwendung von FFmpeg auf der Kommandozeilen-Ebene. Dies erfolgt deshalb, weil damit eine bessere Einstellung der gewünschten Ergebnisse erzielt werden kann.
Das Tool FFmpg ist auch für Windows und MacOS verfügbar. Auf der Kommandozeilen-Ebene sind jedoch die Besonderheiten der beiden Betriebssysteme zu berücksichtigen, auf die hier nicht eingegangen wird.
Wer eine graphische Benutzeroberfläche für FFmpeg anwenden möchte (GUI), kann die Programme WinFF bzw. QWinFF (Linux, Windows) nutzen.
Für FFmpeg gibt es eine GUI:
Linux: WinFF
xxxxxxxxxx
sudo apt install winff
Windows:
- WinFF: https://github.com/WinFF/winff
- QWinFF (https://qwinff.github.io/)
- FFmpeg for Windows: https://ffmpeg.org/download.html#build-windows
Sinnvoll ist für die Umsetzung eine einheitliche Organisation und Namensregeln für die Ordner- und Dateinamen.
├── beschreibung.pdf ├── cd01 │ ├── 01. track 1.wav │ ├── 02. track 2.wav │ ├── 03. track 3.wav │ ├── 04. track 4.wav │ ├── 05. track 5.wav │ ├── 06. track 6.wav │ ├── 07. track 7.wav │ ├── 08. track 8.wav │ ├── 09. track 9.wav │ ├── 10. track 10.wav │ ├── 11. track 11.wav │ ├── 12. track 12.wav │ ├── 13. track 13.wav │ ├── 14. track 14.wav │ ├── 15. track 15.wav │ ├── 16. track 16.wav │ └── 17. track 17.wav
usw. bis cd04
├── cover.jpg ├── gesamt │ ├── beispiel-cd01.wav │ ├── beispiel-cd02.wav │ ├── beispiel-cd03.wav │ ├── beispiel-cd04.wav │ ├── beispiel.flac │ ├── beispiel.mp3 │ └── beispiel.wav ├── inlay1.png └── inlay.png
In diesem Beispiel werden alle Namen klein geschrieben und enthalten keine deutschen Umlaute bzw. Sonderzeichen.
Obwohl das .mp3-Format zwischenzeitlich nicht mehr lizenzpflichtig ist, gilt es für künftige Entwicklungen vorbereitet zu sein. Denn: 1. .mp3 ist ein verlustbehaftetes Format, 2. die heutigen Speichermöglichkeiten benötigen grundsätzlich keine Kompression von Daten mehr.
Deshalb ist es heute ratsam, die gängigen verlustfreien Formate wie .wav oder .flac zu wählen.
Eine weitere Alternative ist ein neueres Audioformat: Opus (.opus). Dabei handelt es sich um ein verlustbehaftetes Format, das allerdings erheblich bessere Klangeigenschaften bietet als .mp3.
Wer nicht unbedingt auf .mp4 angewiesen ist, sollte auf das alternative .webm ausweichen. Das gilt insbesondere für eigene Veröffentlichungen auf dem Blog oder der Website.
Vor- und Nachteile beider Formate:
WebM | MP4 | |
---|---|---|
Qualität | Bessere Qualität | Gute Qualität |
Dateigröße | kleine Dateien | große Dateien |
Verbreitung | Vor allem von Google getragen | Sehr verbreitet |
Patente | Open Source | Lizenzpflichtig |
Quelle: Verschiedene, Google und Co.
Für die Konvertierung von .mp4 ist auszuführen:
xxxxxxxxxx
test@geraet: $ for FILE in *.mp4; do ffmpeg -i "$FILE" -c:v libvpx -b:v 1M -c:a libopus -ab 320k "${FILE%.mp4}.webm"; done
Hinweis: libopus = Audioformat OPUS, libvorbis = Audioformat OGG
Quelle: Ask Ubuntu, URL.: https://askubuntu.com/questions/351593/bulk-batch-convert-mp4-and-m4v-files-to-webm-via-command-line
Ergänzende Hinweise enthält der Blogbeitrag Bilder und Videoformate für das Web.
Beispiel für eine Umwandlung mit den vorgenannten Einstellungen: 1. Größe der .mp4: 1,6 GB (100 %), 2. Größe der .webm: 1,1 GB (68,75 %), 3. Dauer: ca. 50 Min.
Fazit: Die Dateigröße ist bei vergleichbarer Qualität um etwas mehr als 1/4 verringert.
Die Tabelle zeigt im Vergleich die Größe der umgewandelten Formate von einer .mp4:
.mp4 | 597,1 MB |
---|---|
.flac | 372,3 MB |
.mp3 | 104,4 MB |
.opus | 108,4 MB |
.wav | 1,0 GB |
.webm | 359,5 MB |
Hieraus folgt: Als Audioformate sind .flac, ggf. .opus und als Videoformat ist .webm in Kombination mit .opus aktuell eine gute Wahl.
Von den meisten Plattformen werden standardmäßig Audiodateien als .mp3 zur Verfügung gestellt. Dies gilt insbesondere für kostenfreie Hörbücher und -spiele (Audiobook) der öffentlich-rechtlichen Rundfunkanstalten.
Ist die Quelle eine Audio-CD werden die Tracks im Dateimanager in einigen Fällen bereits als .wav dargestellt: Track 1.wav, etc. Diese Dateien lassen sich dann idealerweise direkt in ein Verzeichnis auf den eigenen Speicherort kopieren. Dadurch liegt die Originalquelle im Verhältnis 1:1 auf dem Speicherort vor.
Wenn die Audio-CD keine .wav darstellt, sind die Daten auf den eigenen Speicherort mit speziellen Hilfsprogrammen zu übertragen (CD-Ripper). In diesem Beispiel wird vom Format .wav als Zielformat ausgegangen. Selbstverständlich kann das Audioformat in den Hilfsprogrammen nach den eigenen Wünschen angepasst werden.
Bei MP3-CD/DVD liegen die Audiodateien bereits in einem speziellen Format vor und können auf den eigenen Speicherort kopiert und direkt weiterbearbeitet werden.
Mit FFmpeg lassen sich Cover in Audio-/Videodateien einbetten.
xxxxxxxxxx
test@geraet: $ for f in ./*.mp3; do ffmpeg -i "$f" -i cover.jpg -i meta.txt -map_metadata 0 -map 0 -map 1 -codec copy out-"${f#./}"; done
Im Beipiel wird ein Cover in alle .mp3 eingebettet und es werden die Metadaten übernommen.
Bei .m4a lässt sich das Cover einfügen mit AtomicParsley, das aus den Paketquellen installiert werden kann
xxxxxxxxxx
test@geraet: $ sudo apt install atomicparsley
Zum Einfügen ein Terminal im Verzeichnis mit den .m4a öffnen und folgendes ausführen:
xxxxxxxxxx
test@geraet: $ for f in ./*.m4a; do AtomicParsley "$f" --artwork cover.jpg --overWrite ; done
Mit AtomicParsley werden nur Cover im Format .jpg und .png eingefügt.
Für eine vereinfachte Ausführung der o.a. Kommandos bietet sich ein Bash-Script an. Eine Alternative ist der folgende Aufbau:
xxxxxxxxxx
#!/bin/sh
## Adding Metadata and Cover and Rename
# Quelle
# https://unix.stackexchange.com/questions/84915/add-album-art-cover-to-mp3-ogg-file-from-command-line-in-batch-mode
# https://superuser.com/questions/1589438/convert-mp3-audio-to-aac-m4a-audio
# mp3 Adding Cover, Metadata and Rename
for f in ./*.mp3; do ffmpeg -i "$f" -i cover.jpg -i meta.txt -map_metadata 0 -map 0 -map 1 -codec copy out-"${f#./}" && mv out-"${f#./}" "$f"; done
# Transcode to m4a
for f in *.mp3; do ffmpeg -i "$f" -vn -c:a aac -b:a 320k "${f%.mp3}.m4a" ; done
## Adding Cover to mp4a
# AtomicParsley
for f in ./*.m4a; do AtomicParsley "$f" --artwork cover.jpg --overWrite ; done
Dieses Script eignet sich für einzelne Audio-Dateien, z.B. von Radioaufnahmen, um die manuelle Bearbeitung auf eine vereinfachte Form zu reduzieren. Die meta.txt lässt sich entsprechend manuell anpassen.
Bei einer Vielzahl von Audio-Dateien, z.B. ganze CD, sind die einschlägigen Tag-Editoren weiterhin die bessere Wahl.
Aus mehreren .wav wird eine Datei mit den Programmen FFmpeg und SoX. Zur Installation in einem Terminalfenster eingeben:
xxxxxxxxxx
test@geraet: $ sudo apt install ffmpeg sox libsox-fmt-all
In das Verzeichnis mit den Audio-Dateien wechseln, ein Terminalfenster öffnen und folgendes ausführen:
xxxxxxxxxx
test@geraet: $ ffmpeg -f concat -safe 0 -i <(for f in ./*.wav; do echo "file '$PWD/$f'"; done) -c copy output.wav
Der Ausgabe-Dateiname output ist durch den eigenen Titel abzuändern.
Die so gewonnene verlustfreie Originalquelle kann dann in Audioformate der eigenen Wahl wie .flac, .mp3 oder .opus transcodiert werden.
Tipp
Diese Befehle können auch für andere Audioformate genutzt werden, indem die Angaben wav entsprechend geändert werden: .mp3, .flac, .opus, etc.
Vorhandene .aac lassen sich in zwei Schritten zu einer Audiodatei zusammen fügen:
Schritt 1: Fileliste erstellen
In das Verzeichnis mit den .aac wechseln, ein Terminal öffnen und ausführen:
xxxxxxxxxx
test@geraet: $ ls >files.txt
Bei bereits nummerierten Dateien werden diese in der Reihenfolge der Nummern in eine Textdatei eingetragen.
Schritt 2: Gesamtdatei erstellen
xxxxxxxxxx
test@geraet: $ ffmpeg -i "concatf:files.txt" -c copy output.aac
Der Name output ist den eigenen Verhältnissen anzupassen. Anstelle von .aac kann auch .mp4 eingegeben werden.
Die Ausgabe könnte so aussehen:
xxxxxxxxxx
Input #0, aac, from 'concatf:files.txt':
Duration: 01:16:16.30, bitrate: 512 kb/s
Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp, 512 kb/s
Output #0, adts, to 'output.aac':
Metadata:
encoder : Lavf60.3.100
Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp, 512 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size= 286017kB time=01:16:16.25 bitrate= 512.0kbits/s speed=2.65e+03x
video:0kB audio:286017kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
Mit FFmpeg lassen sich Metadaten in externe .txt speichern. Die Syntax lautet:
ffmpeg i Audiodatei - f ffmetadata Textdatei
Beispiel
xxxxxxxxxx
test@geraet: $ ffmpeg i beispiel.mp3 -i f ffmetadata meta.txt
Damit werden die globalen Metadaten in einer .txt gespeichert. Darüber hinaus lassen sich auch die Metadaten für die Audio- und Videospur auslesen (s. Dokumentation zu FFmpeg).
Vorhandene Metadaten lassen sich in Audio-/Videodateien einfügen. Eine Alternative ist:
xxxxxxxxxx
test@geraet: $ ffmpeg -i test.m4a -i meta.txt -map_metadata 1 -codec copy out-test.m4a
Natürlich ist auch die Übernahme von Metadaten möglich:
xxxxxxxxxx
test@geraet: $ ffmpeg -i test.m4a -map_metadata 0 -codec copy out-test.m4a
Die Angabe 0 steht für Ausgangsdatei und 1 für externe .txt.
FFmpeg bietet nur die Möglichkeit, den Inhalt von .txt in einer neuen Audio-/Videodatei zu speichern, wobei die neue Datei nicht wieder codiert werden muss.
Die Nummerierung erfolgt beim Rippen automatisch. Aus Audiotheken herunter geladene oder von der CD/DVD kopierte .mp3 sind regelmäßig nummeriert, z.B. Folgen von Hörbüchern und -spielen.
Die vorgenannten Tracks als .wav sind noch zu nummerieren, damit eine Datei in der Abfolge der Tracks zusammen gestellt werden kann: 01 Track 1.wav, etc.
Gerade Audiobook lassen sich so vereinfacht abspielen.
Von den meisten Plattformen werden standardmäßig .mp4 zum Download zur Verfügung gestellt. Zumeist werden sogenannte Episoden oder Folgen als Einzelvideo angeboten. Darüber hinaus werden Musikvideos oftmals als einzelne .mp4 bereitgestellt, z.B. auf YouTube (ganzes Album, einzelne Tracks).
Die Übertragung einer Videoquelle von DVD auf den eigenen Speicherort unterliegt nach dem deutschen Urheberrecht restriktiven Beschränkungen, auf die hier nicht eingegangen wird.
Einzelne Videodateien lassen sich mit ffmpeg zu einer Gesamtdatei kombinieren. Der für die Verbindung von Audio-Dateien genutzte Befehl kann auch hier eingesetzt werden:
xxxxxxxxxx
test@geraet: $ ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy output.mp4
Der Ausgabe-Dateiname output ist durch den eigenen Titel abzuändern.
Dieser Befehl kann auch für andere Videoformate genutzt werden, indem die Angaben mp4 entsprechend geändert werden: .mkv, .webm, etc.
Soweit die Videodateien nicht bereits nummeriert sind, ist dies nachträglich vorzunehmen.
Will man aus einem Video die Tondaten separat speichern, so kann auch hier ffmpeg eingesetzt werden:
.wav
xxxxxxxxxx
test@geraet: $ for f in *.mp4; do ffmpeg -i "${f}" -vn -c:a pcm_s32le -ar 48000 "${f%.*}.wav" ; done
Die verlustfreie Quelle lässt sich dann in andere Audioformate transcodieren.
Selbstverständlich ist auch
- eine Extraktion aus weiteren Videoformaten möglich: avi, mkv, webm, etc. Hierzu wird das Videoformat entsprechend angepasst:
xxxxxxxxxx
test@geraet: $ for f in *.webm; do ffmpeg -i "${f}" -vn -c:a pcm_s32le -ar 48000 "${f%.*}.wav" ; done
- eine direkte Umwandlung in bestimmte Audioformate möglich mp3, flac, opus, etc. Hierzu wird das Audioformat entsprechend angepasst:
.mp3
xxxxxxxxxx
test@geraet: $ for f in *.mp4; do ffmpeg -i "$f" -vn -c:a libmp3lame -ar 48000 -ac 2 -ab 320k "${f/%mp4/mp3}"; done
.flac
xxxxxxxxxx
test@geraet: $ for f in *.mp4; do ffmpeg -i "$f" -vn -ar 48000 -f flac -ac 2 -ab 320k "${f/%mp4/flac}"; done
.opus
xxxxxxxxxx
test@geraet: $ for f in *.mp4; do ffmpeg -i "$f" -vn -ar 48000 -f opus -ac 2 -ab 320k "${f/%mp4/opus}"; done
.m4a (Apple Losless Audio Codec)
xxxxxxxxxx
test@geraet: $ for FILE in *.wav; do ffmpeg -i "$FILE" -c:v libvpx -b:v 1M -c:a alac -ab 320k "${FILE%.wav}.m4a"; done
Weitere Informationen enthält der Blogbeitrag Audiospur aus Video-Datei extrahieren.
Ein Standbild wird eingefügt mit
xxxxxxxxxx
test@geraet: $ for f in *.ext; do ffmpeg -i "$f" -loop 1 -i cover.jpg -ar 48000 -b:a 320k -c:a aac -c:v libx264 -shortest "${f%.ext}.mp4"; done
Bei Roh-Audiodateien (.wav, .w64 .raw, ) erfolgt dies mit
xxxxxxxxxx
test@geraet: $ for f in *.wav; do ffmpeg -i "$f" -loop 1 -i cover.jpg -ar 48000 -b:a 320k -c:a aac -c:v libx264 -shortest -strict -2 "${f%.wav}.mp4"; done
Erläuterung:
http
Auf die Möglichkeit, Audio- und Videodateien in mehrere Dateien aufzuteilen (Split) wird hier nicht eingegangen.
Wer seine alten Ton- und Bildträger (Platten, Audio- und Videokassetten in ein digitales Format übertragen will, kann die hier aufgezeigten Handlungsweisen sinngemäß berücksichtigen.
Ergänzende Literatur:
Kirk, Wolfgang: Good Practice - 18: Der digitale Ton - Aufnahme, Bearbeitung und Abspielen
Kirk, Wolfgang: Good Practice - 20: Das digitale Video - Capturing, Screencast, Postproduktion
1. Quelle vorbereiten
- Audio: möglichst gemein- und verlustfreies Format wählen
- Video: möglichst gemeinfreies und speicherarmes Format wählen
- auf dem Speicherort ein vorher festgelegtes Ordner- und Namenssystem verwenden
2. Nummerierung
Audio-/Videodateien sind einheilich zu nummerieren:
01-output.format
3. FFmpeg
- kann in Linux, MacOS und Windows genutzt werden
- GUI: WinFF (Linux, Windows), Alternative für MacOS
4. Kombination
Für Audio und Video kann FFmpeg genutzt werden:
xxxxxxxxxx
ffmpeg -f concat -safe 0 -i <(for f in ./*.format; do echo "file '$PWD/$f'"; done) -c copy output.format
output und format mit den gewünschten Formaten anpassen
5. Audio aus Video
- der Ton kann mit FFmpeg gewonnen werden
- möglichst ein gemein- und verlustfreies Format wählen
6. Umwandlung
Die Umwandlung in ein anderes Format kann mit ffmpeg erfolgen:
- audio: möglichst ein gemein- und verlustfreies Format wählen
- video:
.mp4 ist derzeit Standard
Webpräsenz: möglichst .webm in Kombination mit .opus wählen
7. Digitalisate
- die Hinweise sinngemäß anwenden, wenn alte Bild-/Tonträger in ein heutiges Audio-/Videoformat übertragen werden
- möglichst ein gemein- und verlustfreies Format wählen.
Wer die Wahl, hat die Qual. Es gibt sehr viele Möglichkeiten, Audio- und Videodateien zu erstellen und zu bearbeiten. Wichtig ist, dass man in keiner rechtlichen Grauzone arbeitet bzw. nicht wirtschaftlich von Lizenzen abhängig ist.
Microsoft hat mit .wav und .avi, Google mit .webm gemeinfreie Software bereitgestellt, die es auch dem privaten Nutzer ohne und sogar mit finanziellen Interessen erlauben, Medien rechtlich und wirtschaftlich ohne unangenehme Folgen zu erstellen und zu vertreiben.
Aufgrund der heutigen relativ niedrigen Kosten für Speichermedien ist das Ausweichen auf verlustbehaftete Umwandlungstechnik und lizenzpflichtige Software (Codec) nicht mehr notwendig, um Speicherplatz zu sparen oder im LAN zu kommunizieren. Es gibt viele gute Alternativen. Die beste scheint zu sein, die Rohdaten selbst zu nutzen.
Das Betriebssystem Linux und die anderen gängigen Betriebssysteme bieten heute ein Fülle von (kostenfreien) Möglichkeiten, die digitalen Medien nach den persönlichen Präferenzen nutzen zu können. Dies wird anhand der vorgenannten Hinweise geradezu verdeutlicht.
Wolfgang Kirk
Veröffentlicht: 2022-12-26 aktualisiert: 2024-08-19, 08:00 Uhr