Internet radio stations can be streamed on a Raspberry Pi using simple terminal commands and Mplayer. This post shows what is required and how.
Table of contents
Introduction to streaming internet radio on a Raspberry Pi
Internet radio stations can be streamed on a Raspberry Pi and the Raspberry Pi OS (formerly known as Raspbian). The terminal or Bash scripts will be used for the streaming commands. PuTTY can also be used.
This post will be using Radio Sonder Grense (RSG), as an example, but other radio stations can also be used. A few additional radio stations are also mentioned.
Mplayer will be used to play internet radio. While some media players may need PLS or M3U files, Raspbian’s Mplayer will need ‘direct stream links’ (a link to the actual streaming server) or ASX files (advance stream director files which store playlists).
Using PLS, ASX or M3U links is apparently the best, as these links are usually permanent and will not change. Direct stream links can vary based on individual server availability. The most up to date link will be required.
- Get the Raspberry Pi 4B 4GB Starter Kit from Amazon.com
- Get the Raspberry Pi 4B 8GB Starter Kit from Amazon.com
Streaming internet radio on a Raspberry Pi
Assumptions and requirements
A fully set up Raspberry Pi running the latest update of the Raspberry Pi OS (Raspbian) connected to the internet via Wi-Fi or an Ethernet cable. A keyboard and screen output or PuTTY can be used. Audible audio output to speakers or via HDMI is required.
The streaming services of RSG and Antfarm Internet Radio will be used, but similar radio station streaming services can be used.
Audio player software
For this project, we will be using MPlayer to stream internet radio on the Raspberry Pi. MPlayer is a free, open-source video and audio player for all major operating systems. It can play various file formats including .mp3 and audio streams.
The Raspberry Pi OS might not come with MPlayer pre-installed. The following apt-get
terminal command can be used to install mplayer:
sudo apt-get install mplayer
Out of the box, MPlayer will work just fine for audio streaming. It works simply by using mplayer
in the command line. Output can be tested by the following command:
mplayer /usr/share/scratch/Media/Sounds/Vocals/Singer2.wav
This tells MPlayer to play the pathed .wav file through your default audio hardware settings. Like with some other ALSA-friendly audio players, the audio hardware can also be set by using the following:
mplayer -ao alsa:device=hw=0,0 /usr/share/scratch/Media/Sounds/Vocals/Singer2.wav
or
mplayer -ao alsa:device=default /usr/share/scratch/Media/Sounds/Vocals/Singer2.wav
On the RSG home page, the following links are available under different devices:
http://radio.antfarm.co.za/cdn/clients/sabc/rsg/rsg_22.asx http://radio.antfarm.co.za/cdn/clients/sabc/RSG/mplayer.asp http://radio.antfarm.co.za/cdn/clients/sabc/RSG/listen.plsv rtsp://216.246.37.52:1935/rsg/RSG-Powered_by_Antfarm.stream http://radio.antfarm.co.za/cdn/clients/sabc/RSG/player.asp?id=65
From this list, one can see that there are two direct stream links (.mp3 & .stream) and one ASX file. The .mp3 link worked for me. To use a stream link:
mplayer http://46.4.25.213:9032/;listen.mp3
or
mplayer -ao alsa:device=hw=0,0 http://46.4.25.213:9032/;listen.mp3
to work with an ALSA device.
While the stream is playing, the p keyboard key can be used to pause, m to mute and q to quit the stream playback.
MPlayer can also be stopped externally from a logged-in device by using the sudo pkill -f mplayer
terminal command.
Playlists
MPlayer also has a nice playlist function. This post won’t go into any detail, but it might be needed if the normal commands do not work. MPlayer’s -playlist
flag needs to be used for ASX files. If the playlist flag is used, the address becomes quoted:
mplayer -playlist "http://radio.antfarm.co.za/cdn/clients/sabc/rsg/rsg_22.asx"
Although I personally could not get it to work, it seems like playlisting is also needed for ASP links — maybe you come across other internet radio links that might need it.
Other known radio station links
DEF CON Radio FM
mplayer https://ice4.somafm.com/defcon-128-mp3
or see http://somafm.com/defcon/directstreamlinks.html for their updated list.
Radio Landsberg International
mplayer http://80.237.154.83:8120
or see http://www.radiolandsberg.international for their website.
Classic FM
mplayer -playlist "http://radio.antfarm.co.za/cdn/clients/classic/classicfm_22.asx"
or see http://www.classicfm.co.za for their website.
Conclusion
This post showed how to stream audio on a Raspberry Pi using Mplayer and terminal commands.
Please share your favourite radio station’s streaming address in the comment section below.
Addition: mplayer does seem to have problems with some streams. I found out you can also use VLC without GUI / interface by using cvlc so in the case of the above it would be something like:
cvlc://8343.live.streamtheworld.com:80/KDFCFMAAC_SC
Advantages? Playing tends to start quicker than mplayer and more formats of streams seem to be supported. Reminder: If you start a stream using SSH the stream stops if you break the SSH-connection so use VNC to start a stream then close VNC and it keeps playing fine. Again thanks for the idea / tips
I have been looking for this solution for a while to make an old Raspi-2B into a radiostream-player and it WORKS! Thank you so much for your explanation.
At the time I wrote this post I had to personally email them for the latest URLs. If you do, please share them here =)
Antfarm no longer seems to support RSG. Any new ideas?