3.11.2022
Mit der Telefonsoftware Asterisk gelingt es den MP3-Audiostream von Webradio-Stationen zu empfangen. Ein Telefon mit Freisprecheinrichtung wird dann zu einem Webradio. Jede Station bekommt eine Telefonnummer zugeteilt. Der Frequenzumfang ist eingeschränkt. Für den Empfang von Sprache reicht es aber.
Damit Asterisk das MP3-Protokoll verstehen kann, muss unter Linux bzw. unter Raspbian der entsprechende Dekoder mpg123 installiert sein. Dies geschieht wie üblich in der Konsole auf der Kommandozeilenebene von Linux (auf einem Raspberry Pi also unter Raspbian) mit dem Befehl
sudo apt-get install mpg123
Unter Raspbian des Raspberry Pi ist das schon alles. Getestet mit der Asterisk-Version 16.xx und Raspbian vom Februar 2020.
Um zum Beispiel den Deutschlandfunk zu hören, tragen wir in der extensions.conf das Folgende ein:
; Wer die 337 wählt, hört den Deutschlandfunk. ; mpg123 ist mit "sudo apt-get install mpg123" vorher unter Raspbian zu installieren. exten => 337,1,Answer() exten => 337,n,MP3Player(http://st01.dlf.de/dlf/01/64/mp3/stream.mp3)
Wählt jemand die 337, dann hört er den Deutschlandfunk. Die Klangqualität ist nicht berauschend, aber für das Abhören der Nachrichten oder als Hintergrundgedudel über die Freisprecheinrichtung reicht es. Testweise habe ich den Raspberry Pi 3 B+ mit 10 Streams gleichzeitig belastet. Die CPU-Auslastung lag etwas über 10%.
Wer den vollen Musikgenuss erlangen möchte, greift lieber zum VLC-Player und erstellt M3U-Dateien. Anleitungen dazu gibt in Hülle und Fülle.
Da dieser zusätzliche Service wider Erwarten bei meinen Teilnehmern gut ankommt, habe ich diesen Service mit verschiedenen Musik- und Geschmacksrichtungen erweitert:
; RADIOSENDER MP3-STREAMING ; Stand 12 September 2021 ; mpg123 ist mit "sudo apt-get install mpg123" vorher unter Raspbian zu installieren. ; Deutschlandfunk exten => 401,1,Set(SIP_CODEC=g722) ; erzwingt den Audio-Codec G722, falls unterstützt. Klingt dann besser. exten => 401,n,Answer() exten => 401,n,MP3Player(http://st01.dlf.de/dlf/01/64/mp3/stream.mp3) exten => 401,n,Hangup() ; Auflegen reagiert damit schneller. exten => 512,1,Goto(telefone,401,1) ; wegen der abweichenden Beschriftung schwedischer Wählscheiben. ; ; Deutschlandfunk Kultur exten => 402,1,Set(SIP_CODEC=g722) exten => 402,n,Answer() exten => 402,n,MP3Player(http://st02.dlf.de/dlf/02/64/mp3/stream.mp3) exten => 402,n,Hangup() exten => 513,1,Goto(telefone,402,1) ; ; SWR1 BW exten => 403,1,Set(SIP_CODEC=g722) exten => 403,n,Answer() exten => 403,n,MP3Player(http://liveradio.swr.de/sw282p3/swr1bw/play.mp3) exten => 403,n,Hangup() exten => 514,1,Goto(telefone,403,1) ; ; SR P1 exten => 404,1,Set(SIP_CODEC=g722) exten => 404,n,Answer() exten => 404,n,MP3Player(http://http-live.sr.se/p1-mp3-64) exten => 404,n,Hangup() exten => 515,1,Goto(telefone,404,1) ; ; BBC World Service exten => 405,1,Set(SIP_CODEC=g722) exten => 405,n,Answer() exten => 405,n,MP3Player(http://stream.live.vc.bbcmedia.co.uk/bbc_world_service) exten => 405,n,Hangup() exten => 516,1,Goto(telefone,405,1) ; ; Smooth Jazz CD101.9 New York exten => 406,1,Set(SIP_CODEC=g722) exten => 406,n,Answer() exten => 406,n,MP3Player(http://hestia2.cdnstream.com/1277_192) exten => 406,n,Hangup() exten => 517,1,Goto(telefone,407,1) ; ; Cinemix exten => 407,1,Set(SIP_CODEC=g722) exten => 407,n,Answer() exten => 407,n,MP3Player(http://listenwmp.cinemix.fr) exten => 407,n,Hangup() exten => 518,1,Goto(telefone,408,1) ; ; KCEA exten => 408,1,Set(SIP_CODEC=g722) exten => 408,n,Answer() exten => 408,n,MP3Player(http://streaming.rubinbroadcasting.com/kcea) exten => 408,n,Hangup() exten => 519,1,Goto(telefone,409,1) ; ; Euro Smooth Jazz exten => 409,1,Set(SIP_CODEC=g722) exten => 409,n,Answer() exten => 409,n,MP3Player(http://stream.laut.fm/eurosmoothjazz) exten => 409,n,Hangup() exten => 510,1,Goto(telefone,409,1) ; ; Big Band exten => 410,1,Set(SIP_CODEC=g722) exten => 410,n,Answer() exten => 410,n,MP3Player(http://streams.calmradio.com/api/177/128/stream) exten => 410,n,Hangup() exten => 521,1,Goto(telefone,410,1) ; Wie finde ich die Streaming-Adressen? ; Zum Beispiel auf ; https://vtuner.com/setupapp/guide/asp/BrowseStations/startpage.asp ; Dort Station aussuchen und reinhören. ; Im Browser Mozilla auf den Startbutton des Vtuner-Players ; mit der rechten Maustaste klicken. ; "Seitenquelltext anzeigen" im Popup-Fenster auswählen. ; Mit Strg+F nach mp3 im Quelltext suchen. ; Die entsprechende Streaming-Adresse herauskopieren.
Macros verwenden: Mit Macros lassen sich unter Asterisk solche Programmabschnitte, die nach dem gleichen Muster aufgebaut sind, vereinfachter und kompakter darstellen. Bleiben wir bei dem obigen Web-Streaming-Beispiel. Zur Wiederholung sind als Beispiel nachfolgend drei Webradiosender aufgeführt:
exten => 401,1,NoOp("Deutschlandfunk") exten => 401,n,Set(SIP_CODEC=g722) exten => 401,n,Answer() exten => 401,n,MP3Player(http://st01.dlf.de/dlf/01/64/mp3/stream.mp3) exten => 401,n,Hangup() ; exten => 402,1,NoOp("Deutschlandfunk Kultur") exten => 402,1,Set(SIP_CODEC=g722) exten => 402,n,Answer() exten => 402,n,MP3Player(http://st02.dlf.de/dlf/02/64/mp3/stream.mp3) exten => 402,n,Hangup() ; exten => 403,1,NoOp("SWR1 BW") exten => 403,n,Set(SIP_CODEC=g722) exten => 403,n,Answer() exten => 403,n,MP3Player(http://liveradio.swr.de/sw282p3/swr1bw/play.mp3) exten => 403,n,Hangup()
Wie oben zu sehen ist, läuft der Aufruf der drei Webradiostationen immer nach dem gleichen Muster ab. Für jeden Stationsaufruf sind 4 Zeilen vorgesehen. Bei wenigen Stationen ist das noch kein Problem. Bei 20 Stationen wäre die Tipperei schon lästig. Wir schreiben deshalb ein kleines Macro:
; Wir sind in der extensions.conf ; MACRO ZUM ABSPIELEN VON MP3-STREAMS (mpg123 mit "sudo apt-get install mpg123" vorher installieren) [macro-webradio] ; ARG1 = Stationsname - ARG2 = Audio-Streaming-Adresse exten => s,1,NoOP(${ARG1}) ; NoOP hat keine Funktion, erscheint nur in der Assterisk-Konsole same => n,Set(SIP_CODEC=g722) ; schaltet auf G.722-Audio-Codec um, falls Endgerät unterstützt. same => n,Answer() ; Baut die Verbindung auf, hebt den Hörer ab same => n,Set(VOLUME(TX)=4) ; macht den MP3-Stream im Telefon lauter same => n,MP3Player(${ARG2}) ; Abspielen der Streaming-Adresse same => n,Hangup() ; nicht notwendig, Auflegen klappt besser.
Dieses kleine Macro trägt den Namen webradio und besitzt 2 Platzhalter: ARG1 und ARG2. In ARG1 steht der Stationsname und in ARG2 die Streaming-Adresse. Mit Hilfe dieses Macros lassen sich die drei Stationen viel eleganter aufrufen:
[telefone] ; Bei mir stehen die Extensions historisch bedingt im Abschnitt telefone ; Macro-Aufruf getestet mit Asterisk 16.2.1, ; ältere Versionen verlangen eventuell eine andere Syntax exten => 401,1,Macro(webradio,"Deutschlandfunk",http://st01.dlf.de/dlf/01/64/mp3/stream.mp3) exten => 402,1,Macro(webradio,"Deutschlandfunk Kultur",http://st02.dlf.de/dlf/02/64/mp3/stream.mp3) exten => 403,1,Macro(webradio,"SWR1 BW",http://liveradio.swr.de/sw282p3/swr1bw/play.mp3)
Für jede Station wird nur noch eine Programmzeile benötigt. Der Deutschlandfunk wird mit der Nummer 401 angewählt, Deutschlandradio Kultur mit 402 und so weiter.
Man beachte, dass die die Kommata zwischen den Argumenten ohne Leerzeichen zu setzen sind. Diese Schreibweise habe ich mit Asterisk Version 16 getestet. Ältere Asterisk-Versionen verlangen eine andere Schreibweise. Die Platzhalter müssen ARG1, ARG2, ARG3 und so weiter lauten Sie müssen im Macro mit in geschweiften Klammern stehen und mit einem Dollarzeichen eingeleitet werden, z.B. ${ARG1}.
Wie finde ich die Streaming-Adressen der Webradio-Stationen? Zum Beispiel auf https://vtuner.com/setupapp/guide/asp/BrowseStations/startpage.asp. Dort die gewünschte Station aussuchen und reinhören. Im Browser Mozilla auf den Startbutton des Vtuner-Players mit der rechten Maustaste klicken. „Seitenquelltext anzeigen“ im Popup-Fenster auswählen. Mit Strg+F nach mp3 im Quelltext suchen. Die entsprechende Streaming-Adresse herauskopieren.
Asterisk-Telefonserver auf einem Raspberry Pi – Installation, Konfiguration, Programmierung, SIP, IAX2, AGI-Skripte, Sicherheit und Tipps zum praktischen Betrieb – 2.11.2022: Diese Seite richtet sich an jene, welche einen Asterisk-Telefon-Server auf einem Raspberry Pi betreiben möchten und später ein kleines Netzwerk aus Asterisk-Servern planen, um ein eigenständiges Telefonnetz aufzubauen. Los geht es mit der Installation von Raspbian und Asterisk auf einem Raspberry Pi und dann nach Lust und Laune immer tiefer in die Programmierung von Asterisk. Die Themen werden laufend erweitert.
Selbstverständlich muss es nicht unbedingt ein Raspberry Pi sein. Andere Linux-Rechner gehen auch. – weiter – |