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
 

Related content

  • 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.
  • 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.
  • Programmtipps aus der LinuxUser-Redaktion
    Web-Radio erlaubt Hörgenuss satt. Im Internet finden Sie alle Geschmacksrichtungen und exotischen Radiostationen. 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.

  • DVB-T über USB
    Nicht jeder ist bereit, für das das neue digitale Fernsehen viel Geld auszugeben. Günstige DVB-Hardware existiert oft in Form kleiner USB-Boxen. Wir erklären, wie Sie solche Geräte in Betrieb nehmen und mit MythTV verwenden.
Kommentare

Infos zur Publikation

title_2014_08

Digitale Ausgabe: Preis € 5,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

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 0 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...
openSUSE 13.1 - Login-Problem wg. Fehler im Intel-Grafiktreiber?
Thomas Kallay, 03.07.2014 20:26, 8 Antworten
Hallo Linux-Community, habe hier ein sogenanntes Hybrid-Notebook laufen, mit einer Intel-HD460...
Fernwartung für Linux?
Alfred Böllmann, 20.06.2014 15:30, 7 Antworten
Hi liebe Linux-Freunde, bin beim klassischen Probleme googeln auf www.expertiger.de gestoßen, ei...