Kapitelmarken im Podcast

Mi, 4. August 2021, Ralf Hersel

Beim GLN-Podcast haben wir lange mit Kapitelmarken gehadert. Zuerst hatten wir gar keine, dann fanden wir mit dem Werkzeug mp3chaps eine einfache Möglichkeit, Kapitelmarken in die MP3-Datei des Podcasts einzubinden. Aber auch damit gab es zweimal Schwierigkeiten; die Kapitel wurden in den Podcatcher-Apps nicht angezeigt. Das lag an veränderten Metadaten, die Audacity in die MP3-Datei geschrieben hat. Dank eines Hinweises von Max Mehl (FSFE) haben wir nun eine nachhaltige Lösung gefunden.

Kapitelmarken für den GLN-Podcast in AntennaPod

Das Problem beim Einbetten der Kapitelmarken in die MP3-Datei ist, dass die MP3-Metadaten (ID3-Tags) diese nicht nativ unterstützen. Zwar kann man diese dort hinein basteln, was die Podcatcher aber vor Probleme stellt (siehe dazu auch eine Anfrage im Forum von AntennaPod, die ich im Zusammenhang mit dem Problem gestellt habe). Die MP3-Datei sollte nur für den Audio-Inhalt dienen; alle Metadaten bringt man mit Vorteil im RSS-Feed unter.

Ein Podcast besteht am Ende des Tages aus diesen Bestandteilen:

  • Eine Audio-Datei (mp3) mit dem hörbaren Inhalt des Podcasts
  • Ein RSS-Feed (rss.xml) mit allen Metadaten zum Podcast und den einzelnen Folgen
  • Eine Webseite mit den Shownotes zu den Folgen sind Beiwerk, was technisch nicht zwingend ist

Die Kapitelmarken in die MP3-Datei zu würgen, ist keine gute Idee. Diese packt man besser zu den anderen Metadaten in die RSS-Datei. Und das geht so:

Im RSS-Header sollte man den Namespace für die Kapitel-Einträge definieren (siehe Zeile 'xmlns:psc'):

<rss version="2.0"
xmlns:psc="http://podlove.org/simple-chapters"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

Bei den einzelnen Folgen können dann die Kapitelmarken wie folgt eingetragen werden:

<item>
    ...
    <author>GNU/Linux News</author>
    <pubDate>Sun, 01 Aug 2021 09:50:00 +0200</pubDate>
    <guid>https://gnulinux.ch/gln013-podcast</guid>
    <enclosure url="https://gnulinux.ch/podcast/GLN_013.mp3" length="102384956" type="audio/mpeg" />
    <psc:chapters>
        <psc:chapter start="00:00:00" title="Willkommen beim GnuLinuxNews-Podcast"/>
        <psc:chapter start="00:06:00" title="Wie wird der GLN-Podcast erstellt?"/>
        <psc:chapter start="00:27:22" title="In der Nische liegt die Kraft"/>
        <psc:chapter start="00:44:05" title="Debian 11"/>
        <psc:chapter start="01:05:17" title="Interview RadioTux"/>
    </psc:chapters>
    ...
</item>

Ob das auch ohne den Namespace-Verweis auf 'podlove.org' funktioniert, habe ich noch nicht ausprobiert. Tatsächlich wird der GLN-Podcast vollständig ohne externe Dienste wie Auphonic, Podlove, Reeper/Ultraschall.fm, usw. produziert. Wir verwenden lediglich StudioLink-Standalone für die Aufnahme der Audio-Spuren und ein selbstgeschriebenes Python-Script (feeder.py) zum Upload der MP3-Datei, Generierung des RSS-Feeds und zu statistischen Zwecken. Seit der letzten Folge (GLN013) generiert 'feeder.py' die Kapitelmarken aufgrund einer einfachen Textdatei direkt in den RSS-Feed. Damit sparen wir uns einen Schritt in der Tool-Chain (mp3chaps fällt weg).