FAQs
Sonifex Pro Audio Streamers Frequently Asked Questions (FAQ)
This FAQ (frequently asked questions) answers some of the popular questions asked about the Pro Audio
Streamers. If you have any specific questions regarding the operation the Pro Audio Streamers which aren't
covered below, please contact your nearest distributor, or Sonifex directly.
Pro Audio Streamer and VLC test setups:
Download this FAQ as a PDF file >
VLC GUI:
RTP VLC to Pro Audio Streamer PS-PLAY/PS-AMP (so opening a file on a PC and streaming it to a Pro Audio Streamer PS-PLAY).
To stream from VLC using RTP click media and streaming.
In the file selection box click Add and add an audio file to playback, once the track is showing in the file selection click stream.
Click next change the destination to RTP Audio/Video profile and click add next to the destination.
Change the port if needed to the required value for this example port 4444 will be used and set the address
to RTP://and then the IP address required, e.g. RTP://192.168.0.35
We also need to ensure the audio is in a format that is supported by the PS-PLAY, to do this select
activate transcoding and set the profile to audio-MP3 the PS-PLAY/PS-AMP support all MP3 bitrates up to 320
k so in order to set this click the spanner next to the profile selection.
Set encapsulation to RAW set the bitrate to 128, 160, 192, 256 or 320k.
HTTP VLC to Pro-Audio Streamer PS-PLAY:
Click media and Streaming.
In the file selection box click Add and add an audio file to playback, once the track is showing in the
file selection click stream.
Click next and change the destination to HTTP profile and click add next to the destination.
Enter a port number and a path. We also need to ensure the audio is in a format that is supported by the
PS-PLAY, to do this select activate transcoding and set the profile to audio-MP3 the PS-PLAY/PS-AMP support
all MP3 bitrates up to 320 k so in order to set this click the spanner next to the profile selection.
Set encapsulation to RAW set the bitrate to 128, 160, 192, 256 or 320k.
PS-SEND to VLC
From the GUI:
Click Media Open network stream.
If the PS-SEND is configured to send an individual RTP stream then enter
rtp://0.0.0.0:portnum*
(* where portnum is the streaming port defined on the PS-SEND)
in the network URL and click play
to receive a http stream enter
http://xxx.xxx.xxx.xxx:portnum/radiopath*
( * where xxx.xxx.xxx.xxx =is the IP address of the PS-Send
portnum is the streaming port of the PS-Send
and radiopath is the streaming radio path of the PS-Send (set to pssend by default))
in the network URL and click play.
PS-SEND and PS-PLAY/ PS-AMP Icecast/Shoutcast Setup:
In cases where multiple clients may need to connect to a stream internet radio for example then the PS-SEND, PS-PLAY/PS-AMP support streaming to and from Icecast/ Shoutcast Servers.
A PS-SEND can be connected to a Shoutcast stream as either a source or a relay.
In cases where a dedicated online Icecast or Shoutcast streaming solution is not being used then an Icecast server can be installed on a PC on the network. This server is then capable of handling multiple steams from multiple sends and redistributing them.
Icecast:
The Icecast server install package can be downloaded from here:
http://www.icecast.org/download.php
Once installed and opened the interface appears as below:
To configure the server ensure it is stopped and then edit the configuration. The default configuration is as below:
<!-- This config file contains a minimal set of configurable parameters,
and mostly just contains the things you need to change. We created
this for those who got scared away from the rather large and heavily
commented icecast.xml.dist file. -->
<icecast>
<limits>
<sources>2</sources>
</limits>
<authentication>
<source-password>hackme</source-password>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<fileserve>1</fileserve>
<paths>
<logdir>./logs</logdir>
<webroot>./web</webroot>
<adminroot>./admin</adminroot>
<alias source="/" dest="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
</icecast>
The main setting here that we are interested in is the port and source password we also need to know the IP
address of the PC the server is installed on.
The send is configured as an Icecast source and the destination IP address and port for the Shoutcast server
are entered into the basic settings screen as below:
To connect to the Icecast server installed on the test PC we would enter the relevant port number (here 8000) the IP address of the PC Icecast is running on and click submit to apply these settings.
A radio path must also be entered and submitted in the advanced stream settings Radio Path setting.
Then the password in the advanced security screen should also be set to the source password in the Icecast config file, (in this case hackme). If there is already a password set then set will be displayed at the side of this box if not it will read unset.
To enter a new password simply type the password into the box and click submit.
If the Icecast sever is not running then run it now and it should be possible to view a status page in a
web browser by typing in the IP address of the PC and port number I.e. for this example:
192.168.0.92:8000.
To view status click the administration menu and when prompted enter the admin user-name and password defined in the Icecast config file.
If the send is streaming correctly then it should be possible to see the radio path we specified as a mount point as below:
If this does not happen and all settings are correct then the most likely problem is that a firewall is blocking some or all of the ports required for use or the Icecast application. To overcome this edit your firewall rules to make an exception for the Icecast application.
Connecting the PS-PLAY/PS-AMP to the icecast server:
Connecting the PS-PLAY to the Icecast server is relatively simple the URL is entered as if it is a standard
http stream i.e. URL 1 for our example would be :
http://192.168.0.92:8000/pssend
Icecast Relay:
There are several reasons why it might be beneficial to relay the PS-SEND output via an Icecast server
rather than as a source one of these is if a user wishes to embed meta-data in the Shoutcast stream. To
achieve this the PS-SEND is set up as if it is just sending a standard http (internet radio) stream to the
pc running the Icecast server.
The port must now be a different one from the one used by the Icecast server so for this example port 8001
is used. The password and radio path must all still be specified as well.
Then to begin sending meta-data you would then enter:
http://<ip-ps-send>/rc.cgi?E=StreamTitle='Title';
in the navigation bar, so in our example:
http://192.168.0.148/rc.cgi?E=StreamTitle='U2';
The Icecast server itself also needs some additional information so the config file would be changed as below:
<!-- This config file contains a minimal set of configurable parameters,
and mostly just contains the things you need to change. We created
this for those who got scared away from the rather large and heavily
commented icecast.xml.dist file. -->
<icecast>
<limits>
<sources>2</sources>
</limits>
<authentication>
<source-password>hackme</source-password>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<fileserve>1</fileserve>
<paths>
<logdir>./logs</logdir>
<webroot>./web</webroot>
<adminroot>./admin</adminroot>
<alias source="/" dest="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
<relay>
<server>192.168.0.148</server>
<port>8001</port>
<mount>/pssend</mount>
<local-mount>/test</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
</icecast>
The parts that have changed are all in the relay section, the first of these is the <server> field
(this is the ip address of our send unit).
The second is <port> (the port of our send unit)
The third is <mount> (the radiopath of the send unit)
the fourth is <local-mount> (the mount point for the relayed stream anything can be specified here but
we have used test)
the fifth is <relay-shoutcast-metadata> this is whether we wish to send metadata set to 0 for no data
1 for data, please note if set to 1 and then no metadata is sent from the send then the
stream will not be relayed successfully.
Connecting a Play to the relayed stream:
The play url is then set to the url port and mountpoint of the Icecast server so for this example that
would be:
http://192.168.0.92:8000/test
Shoutcast:
To install a standalone Shoutcast server ( non internet hosted), download the applicable version of
Shoutcast DNAS2.0 from here:
https://www.shoutcast.com/
Then run the install package on the PC you intend to run as your Shoutcast server.
Please note Windows Vista and & 7 users should install to a directory other than program files that they have full access to or logging etc will fail due to Windows UAE.
Once installed open the installation directory in a file manager there are several default configurations
provided by default for this example we are going to use sc_serv_simple.conf as below:
; 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
; the following will force any sources to be public which
; allows us to then connect and be listed on the YP
publicserver=always;
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; as we are going to connect to the YP then we need to fill; in the required options
so we can authenticate to the YP2; see sc_serv.txt - section 3.0 for details on getting this; make sure that
you completely replace the string; <enter_your_auth_key_here> with the authorisation key you; obtained
when registering the stream for the SHOUTcast YP; e.g. if you auth hash key is 12345 then the line would be;
streamauthhash=12345 streamauthhash=<enter_your_auth_key_here>
open this file in a text editor and change the line that reads:
publicserver=always to
publicserver=never
and save the file. This bascically means that the stream will not be listed on shoutcast.com, if you wish your stream to be listed you must obtain an Auth hashkey to enter into your conf file.
Now open the same directory in a command prompt window and enter
sc_serv.exe sc_serv_simple.conf
text similar to that below should be seen:
You should now be able to connect to the Shoutcast server through a webbrowser by entering the default port
within sc_serv_simple.conf ( in this case 8000)
so to open it the url would be:
http://192.168.0.34:8000
(where 192.168.0.34 is the ip address of the Shoutcast PC)
A page similar to the one below should be seen if not check that Shoutcast is not being blocked by a
firewall running on the PC or on a network device like a router.
Setting up the PS-SEND is very similar to setting it up for Icecast in the basic settings the IP address of
the Shoutcast server PC and the port number should be entered and then submitted, i.e url 1 would be
http://192.168.0.92:8000/pssend
The stream settings also need modifying and again these are very similar to Icecast except that icy genre
and name must be specified. For example a name of sonifexradio and genre of pop could be used.
Then submit the stream settings. As with Icecast a Shoutcast server requires a pssword from any sources
connecting to it in this case the password in the conf file used is testing, enter this and click
submit.
Now if you refresh your Shoutcast web page there should be 1 stream available logging in with the default
user/ password of admin/ changeme should show the details of the PS-SEND stream .
The PS-PLAY setup is identical to the setup for Icecast the only parameters that need to be entered are teh
ip address and port number of the Shoutcast server.
Pro-Streamer Web Update
Select �Update� from the top menu bar.
Select �Please click here to continue�.
Browse to select the firmware that you previously downloaded.
Click ‘Upload’ to upload the file into the Pro Audio Streamer and wait until the next screen appears.
Select ‘Click here to reload the main page.
Latency Between The Pro Audio Streamer PS-SEND & PS-PLAY/PS-AMP
Both the PS-SEND and the PS-PLAY allow audio to be passed through an IT network infrastructure. The time taken for the audio to appear from the input on the PS-SEND to the PS-PLAY/PS-AMP, or latency, is dependent on a number of factors:
- The time taken to encode/decode the audio.
- The time taken for the stream to travel through the network.
- The time taken to buffer the stream.
1. Latency Involved in Encoding/Decoding The Audio
The encoder samples the audio it receives in order for it to be handled in the digital domain. Sending each
sample directly would generate a lot of traffic, for example, a 48kHz sample rate would send 48,000 samples,
each within its own Ethernet frame. As an Ethernet frame's minimum size is 60bytes this would lead to
traffic of around 23Mbps. So, it’s important that samples be grouped into a reasonable packet size in
order to avoid clogging up the network.
As an Ethernet frame can carry a payload of around 1500 bytes, 750 samples can be sent. To accumulate 750
samples at 48kHz, approximately 16 ms is required to collect the correct number of samples.
An additional time is added depending on which encoding method is chosen. Higher bit rates mean that the buffer in the PS-PLAY is filled faster and the delay can be reduced. It's also worth noting that the higher the compression of the audio the longer the PS-SEND will take to encode it. That being the case a high compression algorithm like MP3 will introduce a delay, in the order of 20–50ms (dependant on quality settings), whereas using a lower or no compression algorithm, like MPEG2 or PCM, will have less latency.
The decoding of the audio and sample buffer of the D/A in the receiver device will also cause a delay. Again, decoding of MP3 will be more processor intensive. The D/A sample buffer is handled in bytes, which means slower data rates will incur bigger delays at this stage.
2. Latency Involved Over a Network
Another factor involved is the transport protocol selected. HTTP is a TCP protocol which involves hand-shaking and error correction, which slows down packet reception. This means that large amounts are buffering are required for a stable stream which can add a substantial amount of delay. If RTP/ BRTP are chosen, which are based on the UDP protocol, the data is sent much more quickly and therefore less buffering is required, although the trade off is the occasional missed or erroneous packet.
Typically a LAN, (Local Area Network), should involve less latency than an internet stream, although obviously this is very much dependent on network configuration. Local network latency can be minimised in the usual ways such as using intelligent network switches to route traffic to the correct destinations.
3. Latency Involved in Receiving & Buffering The Stream
In a PS-PLAY, the receiver, when receiving an HTTP stream the default buffer is used as standard which is 60kBytes (61440bytes). So the latency for an HTTP stream would be:
For a 192kbs stream:
- 192000/8 = 24000 bytes
- 61440(buffer)/24000 = 2.56
- Latency of approx 2.56 seconds
When receiving an RTP stream, more flexibility is allowed and the buffer size can be changed. To make it simpler, rather than having to work out what buffer size is required for a given delay, the P-PLAY accepts a value in milliseconds and makes the calculation.
Found on the 'Streaming Settings' page on the web server, there is a box entitled 'RTP Delay'. The delay should be big enough to account for network jitter, otherwise the stream will become unstable. As mentioned above, the higher the bit rate, the smaller amount of delay required. The following are recommended values to use:
Algorithm & Rate | Recommended Delay |
MP3 | 600ms |
uLaw/ALaw 8kHz mono | 444ms |
PCM 8kHz mono | 444ms |
uLaw/ALaw 12kHz mono | 316ms |
PCM 12kHz mono | 316ms |
uLaw/ALaw 24kHz mono | 188ms |
PCM 24kHz mono | 188m |
uLaw/ALaw 32kHz mono | 156ms |
PCM 32kHz mono | 152ms |
PCM 44.1kHz mono | 110ms |
PCM 44.1kHz stereo | 79ms |
PCM 48kHz stereo | 72ms |
Conclusion
There are many sources of delay in the system, most significantly buffering to eliminate network jitter. As there will always be a delay present, it is worth configuring the system to use the highest bit rates and sample rates possible, providing that the bandwidth is available.
Some Real World Examples on a Typical Network (PS-SEND to PS-PLAY )
HTTP stream:
MP3 @ 44.1kHz; Quality setting 7 – 2.85s
MP3 @ 44.1kHz; Quality setting 0 – 5.62s
MP3 @ 32kHz; Quality setting 7 – 2.85s
MP3 @ 32kHz; Quality setting 0 – 7.77s
RTP stream, using recommended RTP Delay settings:
MP3 @ 44.1kHz; Quality setting 7 – 0.73s
MP3 @ 44.1kHz; Quality setting 0 – 0.73s
MP3 @ 32kHz; Quality setting 7 – 0.80s
MP3 @ 32kHz; Quality setting 0 – 0.80s
PCM @ 8kHz: 0.51s
PCM @ 48kHz: 0.11s
PS-Send to PS-Play Setup
Streaming from a PS-Send to a PS-Play using RTP
RTP is often the preferred method for steaming as it offers the lowest latency and is the preferred option for point to point streaming. It also supports all encoding formats where PCM and G711 are not supported on TCP (HTTP).
In order to set the PS-send up to stream to a ps-play /amp using RTP select the connection type as RTP and then enter the IP address* of the destination ps-play/ amp or pc and the port number you wish to send on.
(*Please note broadcasting or sending to multiple devices using raw UDP RTP or BRTP is not recommended as it can create very high network traffic.)
The ps-play would then be set up as below: The play URL is set to receive audio from any IP address and the correct port number (RTP://0.0.0.0:portnum), this method is referred to as push streaming.
RTP Multicast:
In cases where the low latency of RTP is needed but multiple clients are also required then only option is multicast.
Multicast is where a single stream is sent to a multicast address on the network and multiple clients can connect to this address with only the need for one stream.
PS-sends and plays fully support multicast and all that needs to be set for a multicast broadcast is that the send should be configured to send to a multicast address and the play should be configured to play back from it.
Multicast addresses are in the range: 224.0.0.0 to 239.255.255.255 You should contact your network administrator to see what addresses are available for you to use.
Streaming from one Send to one play unit HTTP single client server:
The configuration for this is similar to the RTP configuration but the play URL must also contain the radio path of the send located in streaming settings.
The play URL will then need to be set as http://x.x.x.x:portnum/radiopath (where x.x.x.x is the IP address of the server)
Streaming to multiple PS-plays/ amps using http internet radio:
If you wish to stream to up to 6 ps-play units then using http is recommended the PS-send is set up as below with internet radio (HTTP) selected and the IP address set to 0.0.0.0 the port number must still be specified and the radio path in stream settings.
For up to six connections from a PS-send each additional stream (in addition to stream 1) must also be set to HTTP with the same port number i.e.:
From the drop down box labelled select connection each connection must be set to HTTP and each port set to the applicable port and then submit clicked. So for six connections this would need to be repeated for all connections from 2 to 6.
The PS-play or amp is then set up as below: (this method is referred as a TCP listen.) This is because the send will only send a stream if a unit connects to it so it listens for an incoming connection.
This time the play has the full IP address followed by the port number and the path and up to six units can be configured in this way.
If more than 6 PS-plays are to be streamed to from one PS-send then a shoutcast server must be used.