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.
  • 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.

Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

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

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

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...