Well, it’s only taken much of the day, however it’s something that I finally got working, and it’s usually when you thought you’ve exhausted all options that you give up… but I had to try that one last time… And… I got it!
StationPlaylist is a great little piece of software for radio broadcasting. One of the things it has built in, is a web streamer, so that you can push the audio to a a ShoutCast or IceCast Stream.
This features work wonderfully and very simply if you only have one station. But, when you need to scale, things become less obvious – a lot less obvious.
In preparation for getting a multi-SPL install working and emulated on a VPS, or powerful VMs, I had to try this out just using the demo versions, and after much carry on, it seems to be working.
So, the idea is to get (at least) 2 versions of SPL to push to a linux ShoutCast 2 server. You can find multiple install instructions on how to do that, so I won’t even try to explain that part. I’ve written about it a couple of times in the past.
ShoutCast on a VPS
The problems with ShoutCast (apart from the fact that Winamp (NullSoft) or ShoutCast are doing a terrible job with their latest rendition of server software for the DYIer), and with SPL is that getting them to marry up with multiple instances is a real pain.
The secret to getting SPL to go to the correct server, with the correct SteamID is in the “Encoder Password” box.
Entering the following will connect you as User 3, a password of testing1, to stream Id 3.
That’s not the only thing to configure. After putting bits together over the course of the last several hours and finding a couple of key pieces of information, it’s all come together.
It took me a long time to see this, but it’s mentioned in the SPL documentation under the Studio Help, Operation, Internet Streaming: under the heading “SPL Encoder Configuration”.
Note: SPL Encoder supports sending a single stream to a Shoutcast v1 or v2 server. However, from Shoutcast Server v2.4.7, multiple streams may be sent to the same server by placing the stream ID in the Password field using this syntax…
password:#n where n is the stream ID number. eg. MyPass:#2
The other significant discovery was getting a configuration file working correctly too.
This is the sc_server_basic.conf file I ended up using for my testing:
; NOTE: for any relative paths specified are relative to ; sc_serv and not to where the conf file is being stored ; here we will setup where the log and other related files ; will be stored. make sure that these folders exist else ; sc_serv will throw an error and will close itself down. ; we will make the logs save to the sc_serv2 directory logfile=logs/sc_serv.log w3clog=logs/sc_w3c.log banfile=control/sc_serv.ban ripfile=control/sc_serv.rip ; for testing we will make the server only work locally ; (i.e. localhost / 127.0.0.1) though if this is left out ; or set to publicserver=always then we attempt to make a ; connection to the YP for listing - do not forget to add ; in a 'streamauthhash' value for any public streams made ;publicserver=never ; if you're wanting to use a different port to use for any ; connections then you can use this option e.g. to use 80 ; otherwise port 8000 is used as the default to listen on. ;portbase=80 ; password used by sc_trans or the Winamp dsp plug-in ; NOTE: remember to change this to something else password=testing ; password used for accessing the administation pages ; NOTE: remember to change this to something else adminpassword=changeme ; now we will specify the details of the stream we're going ; to serve which can be done as follows ;streamid=1 ;streampath=/test.aac ; or ; it can be done like this which is how it needs to be done ; if you are going to provide multiple streams from sc_serv password_1=testing1 streamid_1=1 streampath_1=/test1.mp3 password_2=testing2 streamid_2=2 streampath_2=/test2.mp3 streampassword_2=testing1 password_3=testing streamid_3=3 streampath_3=/test3.mp3 streamadminpassword_3=testing streampassword_3=testing1
The significant things are the multi-stream configurations.
In this image, there are only 3 separate streams shown as connected to my local server. 2 are using a demo copy of SPL, and the third (stream 2) is using the Shoucast DSP plugin in Winamp on a Windows 10 box (of which that plugin doesn’t work in SPL. If it did, I wouldn’t have spent all day figuring this out).
That’s pretty much it. I hope it helps you, running multiple streams on the same server, through StationPlaylist, emulated in Wine using multiple instances with the help of PlayOnLinux.
The sky is the limit!