AA_radio_mmagellan_sxc_376025.jpg

© Mmagellan, sxc.hu

Westentaschen-Radio

Mit Ffplay Streams aus dem Web abspielen

19.12.2013
Mit wenigen Zeilen Shell-Code bauen Sie einen flexiblen, leicht anpassbaren Stream-Player zusammen.

Sie brauchen keine ressourcenfressende Multimedia-Anwendung zu starten, um mal eben ein bisschen Internetradio zu hören: Es gibt unter Linux einige Programme für die Kommandozeile, die Streams von Radiosendern abspielen. Ein einfaches Shell-Skript als Wrapper genügt vollkommen, um Internet-Radiosender komfortabel zu verwalten oder Streams abzuspeichern und bei Bedarf erneut abzuspielen.

Den Kern des Skripts bildet ein Modul aus der Ffmpeg-Suite (http://www.ffmpeg.org), zu der neben Ffmpeg, Ffprobe und Ffserver auch Ffplay gehört. Letzteres ermöglicht es, einen Sender im Netz komfortabel von der Kommandozeile aus zu genießen. Das folgende Kommando reicht schon aus, um den Radiosender "Rock Antenne" zu abzuspielen:

$ ffplay http://mp3.webradio.rockantenne.de:80

Mit etwas Geschick basteln Sie um dieses Programm herum einen eigenen, schlanken Radioempfänger.

URLs sammeln

Bei der Suche nach einer guten Adresse im Internet, die so ziemlich alle Radiosender vorhält, landen Sie wahrscheinlich früher oder später bei Liveradio (http://www.liveradio.de). Dort finden Sie Hunderte von Radiosendern, in verschiedene Sparten von Rock bis Klassik untergliedert.

Wie oben schon gezeigt, reicht es aus, dem Programm Ffplay eine URL als Parameter zu übergeben, unter der es den Stream eines Radiosenders abruft. Um an diese URLs zu kommen, müssen Sie die PLS-Dateien, die eigentlich für den externen Player gedacht sind, mit einem Editor öffnen. Listing 1 zeigt den Aufbau einer solchen Datei.

Listing 1

[playlist]
Title1=Jazzloft
File1=http://stream.laut.fm:80/jazzloft
Length1=-1
NumberOfEntries=1
Version=2

Der Inhalt der eckigen Klammern in der ersten Zeile einer solchen Datei verdeutlicht schon deren Zweck: Es handelt sich im Prinzip um eine Playlist. Der Title1 gibt den Namen für die Anzeige des Radiosenders vor, hinter File1 finden Sie die URL zum Stream. Da es sich bei solchen Streams um einen kontinuierlichen Strom handelt, erfolgt unter Length1 die Angabe -1, damit der Player den Stream fortlaufend abspielt. Die anderen Einträge fallen weitgehend selbsterklärend aus. Manchmal kommt es vor, dass die PLS-Datei zwei Streams angibt, von denen Sie einen auswählen können.

Selbst gemacht

Für ein kleines Webradio brauchen Sie nun ein Skript, das diese URLs mit einem Namen verbindet, der sich für eine Auswahl eignet. Das geschieht über ein assoziatives Array in der Bash. Sie legen es mit der Anweisung declare an, wobei Sie in diesem Fall die Option -A verwenden.

Die gesammelten URLs landen nun in diesem Array. In Listing 2 belegen diese die Zeilen 3 bis 7, wobei jeweils der Anzeigename als Schlüssel dient. Damit liegen alle Angaben an einer Stelle, und Sie brauchen später den eigentlichen Code des Skripts nicht mehr zu ändern, wenn neue Sender hinzukommen.

In der Zeile 9 bewirkt ein einfaches clear das Löschen des Terminals, bevor Sie in der Zeile 10 mit einem Echo-Befehl die Ausgabe des Programms beginnen. In Zeile 12 startet eine Select-Anweisung, die mithilfe der Schlüssel des oben definierten Arrays ein Menü gestaltet.

Dabei gibt es mehrere Dinge zu beachten. Das Ausrufezeichen vor dem Namen der Array-Variablen sorgt dafür, dass die Shell die Schlüssel ausgibt. Mit dem Subskript @ erhalten Sie diese jeweils mit Anführungszeichen umschlossen. Damit interpretiert die Select-Anweisung die Leerzeichen in den Namen korrekt.

Listing 2

#!/bin/bash
declare -A SENDER
SENDER["Hellweg Radio"]="http://87.118.64.215:8000/"
SENDER["Rock Antenne"]="http://mp3.webradio.rockantenne.de:80"
SENDER["Bayern 3"]="http://gffstream.ic.llnwd.net/stream/gffstream_w12b"
SENDER["Radio Berlin"]="http://rbb.ic.llnwd.net/stream/rbb_radioberlin_mp3_m_b"
SENDER["Musicalradio"]="http://mp3.musicalradio.de/musicalradio.mp3"
clear
echo "Radiosender auswählen:"
select ENTRY in "${!SENDER[@]}"; do
  TITLE="${ENTRY}"
  URL=${SENDER[${ENTRY}]}
  ffplay -x 300 -y 100 -window_title "${TITLE}" ${URL} &>/dev/null
done

Auf die Do-Anweisung folgt der Teil, in dem die beiden Variablen URL und TITLE die richtigen Werte durch Zuweisung erhalten. Anschließend spielt Ffplay den Sender ab, die zusätzlichen Optionen regeln Breite, Höhe und Titel des Ausgabefensters. Der Befehl &>/dev/null am Ende bewirkt, dass die Meldungen des Programms nicht im Terminal erscheinen.

Bei manchen Sendern dauert es einige Sekunden, bis Ffplay den Stream erfasst. Dann erst erscheint das Ausgabefenster, und die Software spielt den Sender ab. Falls Ihnen das Radioprogramm nicht gefällt, schließen Sie einfach den Sender und wählen anschließend im Menü einen anderen aus. Sie beenden das Shell-Skript mit der Tastenkombination [Strg]+[C].

Abbildung 1: Dank des individuellen Fenstertitels erkennen Sie leicht, welchen Sender Ffplay gerade abspielt.

Wollen Sie die Liste mit weiteren Sendern ausweiten, erweitern Sie das assoziative Array am Anfang des Skripts einfach um die entsprechenden Einträge. Achten Sie aber darauf, dass Sie keine gleichnamigen Schlüssel verwenden: In diesem Fall weist die Shell dem Eintrag den neueren Wert zu.

Möchten Sie das Skript systemweit installieren, böte es sich an, die Liste der Sender in einer separaten Datei zu verwalten. Das würde es ermöglichen, dass jeder Benutzer seine eigene Liste mit Sendern pflegt. Im Prinzip wäre dazu nur notwendig, die Zeilen*3 bis 7 auszulagern und im Skript durch ein source Dateiname zu ersetzen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Ein echter Rocker
    Auch der besten Software fehlt manchmal das gewisse Etwas, um den Nutzer komplett glücklich zu machen. Bei der KDE-Jukebox Amarok finden Sie es vielleicht in einem der zahlreichen Skripte, die Amarok erweitern.
  • Internet-Radio hören mit Radio Tray
    Einschalten, umschalten, abschalten – so einfach, wie ein Uralt-Radio funktioniert Radio Tray, das Applet für Internet-Radio.
  • Wer mit dem Wolf hört
    Amarok hat das Zeug zu einer Killer-Applikation: Der Audio-Player spielt lokale Musiksammlungen, Internetradios, synchronisiert mit dem iPod, nutzt Last.fm und läuft nur unter Linux.
  • Internet-Radio: Programmtipps aus der Redaktion
    Die LinuxUser-Redaktion stellt für Sie die Lauscher auf: Was hören Redakteure nach Feierabend oder bei der Arbeit? Hier finden Sie ein Best-of der persönlichen Favoriten.
  • xine, eine freie Playerbibliothek
    Dieser Artikel gibt einen Überblick über xine und dessen Frontends, beschreibt Installation und Anwendung dieser Programme und erklärt nebenbei noch verschiedene Aspekte von Multimedia auf Computern unter GNU/Linux.
Kommentare

Infos zur Publikation

LU 07/2015: Daten sichern

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Grammatikprüfung in LibreOffice nachrüsten
Grammatikprüfung in LibreOffice nachrüsten
Tim Schürmann, 24.04.2015 19:36, 0 Kommentare

LibreOffice kommt zwar mit einer deutschen Rechtschreibprüfung und einem guten Thesaurus, eine Grammatikprüfung fehlt jedoch. In ältere 32-Bit-Versionen ...

Aktuelle Fragen

Fernwartung oder wartung im haus
heide marie voigt, 29.06.2015 10:37, 2 Antworten
gerne hätte ich jemanden in Bremen nord, der mir weiter hilft - angebote bitte mit preis HMVoigt
Druckeranschluss DCP-195C
heide marie voigt, 29.06.2015 10:35, 1 Antworten
installiert ist linux ubuntu 15.04 offenbar auch der treiber für den Drucker DCP-195C. Die Konta...
keine arbeitsleiste beim einloggen
heide marie voigt, 27.06.2015 13:31, 0 Antworten
seit der neu-installierung von linux ubuntu 15.04 erscheint die arbeitsleiste rechts oben erst na...
raid platte an linux mint 17.1
andreas schug, 23.06.2015 19:44, 0 Antworten
folgende thematik NAS Iomega Storage Center wird auf einmal nicht mehr im netzwerk erkannt .....
SUSE 13.2 - Probleme mit kmail
kris kelvin, 03.06.2015 13:26, 2 Antworten
Hallo, nach dem Umstieg auf 13.1 hatte ich das Problem, daß kmail extrem langsam reagierte. Nun...