MyComputingArt (circa 1993)
Sun, 04 May 2008
How to broadcast audio with Icecast
You need to install Icecast and Winamp with the Shoutcast plugin for Winamp.
In this howto I explain:
On the server
- edit
icecast.xml to make some changes according to your preferences.
The variables that should be changed are:
<clients> - maximum number of concurrent listeners to the server (I set 3)
<sources> - maximum number of sources sending audio to Icecast (I set 1)
<source-password> - the password used by the source (Shoutcast plugin) to connect to Icecast
<relay-password> - the password used by a remote Icecast to connect to the local Icecast and relay the stream
<admin-user> - the username to access administration features
<admin-password> - the password to access administration features
<hostname> - the server URL or IP or localhost
<port> - the port Icecast will use to serve the stream to the clients
<bind-address> - optional IP to bind to a specific network card
- run Icecast and click Start server: Server status should show a green Running

- run Winamp, open Preferences, Plug-ins, DSP/Effect, Nullsoft SHOUTcast Source DSP; go to the Output tab, change the password as configured as
source-password in icecast.xml (leave the default values for address and port: localhost and 8000), then set the encoder options you prefer in the Encoder tab. When you press Connect in the Output tab, Winamp connects to Icecast through the shoutcast plugin and if everything is working fine Status should display the bytes sent and the time

- configure your firewall to allow incoming connections to the port specified in
icecast.xml (if you want to stream over the internet)
On the client
Open Winamp and play this location (Ctrl + L): http://YourIP:YourPort/stream
You can also see the status of your new station: http://YourIP:YourPort/status.xsl
And if you click on Administration and log in using the username and password you specified as admin-user and admin-password in icecast.xml you can see the clients and kick them off (but it's only a matter of time before the client will reconnect).
Delay reduction is affected by the interval between the time Winamp starts serving audio to Icecast and the time the remote listening Winamp starts receiving audio from Icecast. So, this workaround is useless if the listener connects at any time to an always running broadcasting server; it could be used in some specific cases, for instance to make a voice chat in a LAN or when voice chat services cannot be used.
- In listener's Winamp Preferences, Plug-ins, Input, Nullsoft MPEG Audio Decoder, Configure, Streaming tab, set Streaming Data Buffer and Streaming Prebuffer to the lowest possible values.

- The server's Winamp and the listener's Winamp must connect to Icecast with as little delay as possible: press the Connect button in the Preferences, Plug-ins, DSP/Effect, Nullsoft SHOUTcast Source DSP, Output tab on the serving Winamp and open the
http://YourIP:YourPort/stream location on the listening Winamp at the same time or with very little delay.
This way, audio delay between two PC in my wireless LAN reduced to as low as 2 seconds.
At the moment Remote Desktop Protocol doesn't support bi-directional audio and it's not possible to use Skype or MSN or other voice chat services because they require to transmit audio from the server to the RDP client and vice versa.
Obviously, this applies when it's not possible to install voice chat services on the client, for instance when the client is Windows 98 or Linux, otherwise the solution would be to use the chat software on the client bypassing RDP.
A workaround could be this, supposing to be able to install Winamp on the client:
- on the RDP server Icecast should listen to remote Winamps: remove from
icecast.xml the bind-address parameter in listen-socket section
- on the RDP client Winamp should serve audio to the RDP server (192.168.0.16), where Icecast is running

- on the RDP client Winamp should get audio from the microphone

This way, I can provide to the RDP server the audio coming from the microphone which is plugged in the RDP client, and the RDP server broadcasts it. My pal can listen to me connecting a media player (different from Winamp: read on) to my Icecast.
For me to hear my pal, he could broadcast audio himself starting Icecast and Winamp on his station and I could connect Winamp on my RDP server to my pal's Icecast and hear his audio through RDP from my RDP client speakers.
It's quite complex but it works.
[/software]
permanent link
Powered by Blosxom.