Inhaltsverzeichnis

Podcasts von MP3 und Vorbis in OPUS transkodieren

Podcasts werden derzeit häufig im MP3-Format in Stereo mit 128-192 kbit/s ausgeliefert (etwas seltener findet man auch das datensparsamere OGG/Vorbis Format).

Bei Podcasts kann(!) jedoch ein datensparsameres Mono-Signal ausreichen - und Opus ist (als Nachfolger von OGG/Vorbis) zur Zeit der effizienteste Codec in Bezug die Bandbreite und Speicherbedarf bei gleichbleibender Qualität. Da jedoch kaum Podcasts mit (zusätzlichen) Opus-Feeds angeboten werden (obwohl dies mit Auphonic sehr einfach möglich wäre), befasst sich dieser Beitrag mit der Transkodierung von MP3/Vorbis zu Opus (mono) unter Linux. Insbesondere jene Podcasts, welche man nicht nur einmalig hören (sondern dauerhaft archivieren) möchte, können auf diese Art Speicherplatz-schonend gesichert werden.

Podcatcher

Als Podcatcher werden in diesem Beispiel die Podcatcher „Rhythmbox“ und „gPodder“ behandelt; andere Podcatcher können aber ähnlich angepasst werden. Über Empfehlungen zu einem CLI-Podcatcher wäre ich sehr dankbar! ;-)

Werkzeuge (Tools)

Zum Transkodieren von MP3 und Vorbis zu Opus benötigt man MP3- und Vorbis-Dekoder, sowie den Opus-ENkoder.

sudo apt update && sudo apt install --yes lame vorbis-tools opus-tools # Falls noch nicht installiert: "rhythmbox" oder "gpodder" als Podcatcher ergänzen

Verzeichnisse und Dateien

In diesem Beispiel wird zunächst ein Verzeichnis für neue Podcasts angelegt:

mkdir -p ~/Audio/Podcasts

Der Podcatcher wird anschließend so konfiguriert, dass eben dieses Verzeichnis für den Download neuer Episoden genutzt wird. Der Podcatcher erstellt dabei für jeden Podcast-Feed einen eigenen Unterordner.

Downloadpfad in Rhythmbox ändern

Menüleiste → Bearbeiten → Einstellungen → Reiter „Podcasts“ → Speicherort

Downloadpfad in gPodder ändern

Das Ändern des Speicherorts für heruntergeladene Episoden in gPodder erfolgt (leider etwas umständlich) über die Umgebungsvariable „GPODDER_DOWNLOAD_DIR“ (Quelle).

In einer laufenden Sitzung kann gPodder direkt mit der entsprechenden Umgebungsvariable aufgerufen werden:

GPODDER_DOWNLOAD_DIR=$HOME/Audio/Podcasts gpodder

Für dauerhafte Verwendung der Umgebungsvariable nach jeder Anmeldung kann die ~/.profile-Datei entsprechend ergänzt werden:

echo "export GPODDER_DOWNLOAD_DIR=$HOME/Audio/Podcasts" >> ~/.profile

Hinweis: Die zweite Methode greift erst nach der nächste Anmeldung - also NICHT in der laufenden Sitzung!

Dateinamen in gPodder ändern

Das Umbenennen der Originaldateien (Dateinamen = Episodentitel) kann in gPodder wie folgt eingerichtet werden: Menüleiste → gPodder → Einstellungen → Erweiterungen → „Episoden nach dem Download umbenennen“ → aktivieren

Skripte

Die Umwandlung selbst erfolgt durch Bash-Skripte, welche zunächst erstellt werden müssen:

HINWEIS: Wenn man auf das Stereo-Signal nicht verzichten möchte, lässt man in den nachfolgenden Beispielen das --downmix-mono weg und erhöht die Bitrate auf 36 kbit/s (--bitrate 36). Weitere empfohlene Einstellungen findet man hier: https://wiki.xiph.org/index.php?title=Opus_Recommended_Settings

cat «-„EOF“ > ~/transcode_mp3_podcast.sh #! /usr/bin/env bash lame –decode „$1“ - | opusenc –downmix-mono –bitrate 24 - „${1%.[Mm][Pp]3}“.opus && rm „$1“ EOF

cat «-„EOF“ > ~/transcode_vorbis_podcast.sh #! /usr/bin/env bash oggdec „$1“ –output - | opusenc –downmix-mono –bitrate 24 - „${1%.[Oo][Gg][GgAa]}“.opus && rm „$1“ EOF

Anschließend müssen die Skripte noch ausführbar gemacht werden:

chmod +x ~/transcode_*_podcast.sh

rekursives Umwandeln

Um nun rekursiv alle Podcast-Episoden zu transkodieren, eignet sich find:

find ~/Audio/Podcasts -type f -name *.[Mm][Pp]3 -exec ~/transcode_mp3_podcast.sh {} \;
find ~/Audio/Podcasts -type f -name *.[Oo][Gg][GgAa] -exec ~/transcode_vorbis_podcast.sh {} \;

Das war's! Die Umwandlung benötigt zwar etwas Zeit, dafür ist das eingesparte Datenvolumen aber (prozentual) enorm. Würden doch nur alle Podcasterinnen und Podcaster direkt in Opus, mono, 24kbit kodierte Dateien ausliefern… ;)

Video-Podcasts

Mit dem CLI-Tool youtube-dl lassen sich auch Audiodateien im Opus-Format aus Video-Podcasts extrahieren:

youtube-dl --quiet --extract-audio --audio-format opus --audio-quality 0 --output "%(title)s.%(ext)s" $download_url

ToDos

  1. Die Übernahme der Metadaten aus dem RSS-Feed in die Opus-Dateien. Hierbei könnte ich Unterstützung gebrauchen!
  2. Das (optionale) verschieben der fertigen Dateien auf einen Netzwerkspeicher (NAS/Cloud) nach der Umwandlung (z.B. mittels rsync oder SFTP).
  3. Das Umwandeln von MP4/M4A-Dateien in Opus

Quellen