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
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ä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.
  • 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.
  • 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 02/2016: Alt-PCs flott machen

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!       

Der Tipp der Woche

Schon gewußt?

14.11.2015

Auch unter Ubuntu 15.10 kann man wieder mit dem Startmedienersteller (alias Startup Disk Creator) ein Live-System auf einem USB-Stick einrichten. ...

Fehler des Startmedienerstellers von Ubuntu 15.10 umgehen

Aktuelle Fragen

Tails Update
Val Lerie, 11.01.2016 10:51, 0 Antworten
Hallo zusammen, updaten > update Speichern unter > Persistent nicht möglich, mit der Meldung;...
Recoll
Jürgen Heck, 20.12.2015 18:13, 4 Antworten
Wie kann man mit Recoll nach bestimmten Zeichen/Satzzeichen bzw. Zeichenkombinationen suchen, z....
Wings Platinum 4 auf Linux?
Bodo Steguweit, 18.12.2015 11:37, 4 Antworten
Hallo in die Runde ich nutze für meine Diashows Wings Platinum 4 als Diareferent. Arbeite jetzt...
Bandbreite regulieren
Georg Armani, 25.11.2015 16:50, 1 Antworten
Hallo, ich bin ein Neuling in Sachen Linux und hoffe auf Hilfe. Ich habe zwei Windows Rechner...
Windows 10 verhindert LINUX
Hans Wendel, 17.11.2015 17:47, 8 Antworten
Hallo alle, mit einem W10-Laptop (vorher war Win7) wollte ich LINUX ausprobieren. Alles, was ni...