Thanks to Caolas for putting me on a useful track with this. I am now
successfully streaming from my SlimServer to a remote Icecast server
configured as a stream relay.

Here's the basic config: 

I'm using VLC to play the mp3 stream from SlimServer and then use VLC's
streaming capability to send a stream to the remote Icecast device. This
provides a stream of a known data rate (with a caveat - see below) to
the remote relay and thus solves the problem of weird timing data being
misinterpreted by the remote device.

VLC appears as a player in the SS web interface and I'm sending a
320kbps stream to it.

To make the stream as easy as possible to handle at the other end I am
streaming from VLC using HTTP. This requires setting the Preferences in
VLC to enable this output module. Prefs->(check Advanced
Options)->Stream Output->Access Output->Access Output Module "HTTP
Stream Output".

Then open File->Open Network Stream. Check the Advanced Options
Stream/Save box at the bottom and enter the URL of your SlimServer
stream - "http://yourhostip:9000/stream.mp3";. I am running VLS on the
server machine (Linux FC6) but VLC can actually be on any machine that
can access the stream. I found that despite VLC running on the same
machine as the server I could not use "localhost" and had to enter the
IP address.

Now click Settings in Advanced Options (next to Stream/Save). Check
Play Locally if you want to be able to listen to VLC's output directly
to check it's what it should be. Also check the HTTP box and choose a
port number. I'm using 8080 (be sure that you have a hole in your
firewall to let this port # through).

If you leave the Address box blank, you can receive the VLC stream on
any destination machine. This is not a good idea as about 5 listeners
will occupy all your bandwidth. So put the address of the relay server
in here as soon as you have it working. However you can use the same
system to stream a single program to players all over your OWN network
without it going outside using this capability, so if that's what you
want to do, feel free.

Under Encpasulation Method, check "Raw". I'm streaming primarily into
Second Life: other encapsulation methods work with other players (VLC
on another machine will take almost anything you give it) but for me
the Icecast relay only worked with Raw checked.

Under transcoding options, check Audio Codec and set the format to mp3.
Again no doubt other streams will work but I wanted to start simple. My
relay gives me up to 128kbps so I have the Bitrate set to 128 and 2
channels.

OK the Stream Output dialog and OK the Open... box under it.

Now, assuming that you are actually playing something from SlimServer
to the VLC address, you should see the timer in the bottom left of the
VLC window incrementing and the track name in the right-hand section.
If you checked Play Locally earlier you can listen to the sound card of
this machine and check that you can hear what VLC is streaming.

You should have a stream coming from http://yourexternalip:8080 at this
point, where "yourexternalip" is the IP address that your VLC machine
appears to be on to the outside world - for example you may be using
port forwarding to make port 8080 (for example) visible to the world at
large: in this case "yourexternalip" will be the external address of
your router and you can check that in  a number of ways. On another
machine you should be able to run up a player and put that URL into it
and hear the outgoing stream from VLC.

At the relay server end your provider or whomever needs to plug this
stream data into the Icecast server settings, configured as a stream
relay. Given the Icecast stream output address, you should be able to
plug this into a player and listen to it on your machine. More
importantly, in my case, you should be able to set the media access URL
of your land in Second Life to this address and all visitors to your
club or whatever will be able to hear the stream. 

At this point you can go back and start tying up some loose ends, like
password-protecting various parts of the path and specifying the stream
destination address in VLC.

I am currently using this system for DJing in SL (first session at the
London Trance Club in Mephit last night) and I was driving SS by
building a playlist on the fly, prefading tracks to add to the playlist
by running an additional software player. There are drawbacks with this
approach, notably lack of crossfade capability.

Caveats.

You have to watch a couple of things. The big one is that you do not
want the outgoing stream to change its bitrate. It unfortunately WILL
change its bitrate if you play something that has a lower bitrate than
the bitrate limit set for that player in SS. This is not usually a
problem for me as almost all my server files are in FLAC. However I
have a few files that were downloaded mp3s at lower rates. If you play
one of these and they are lower than the limit, VLC will output them
all right, but the Icecast server will be completely confused and the
track will come out of remote players at some rather faster than normal
speed. You can resync the stream but then everyone would have to press
stop/play and this will of course not happen so they'll get dead air.

What I really need, to be able to solve that, is to be able to generate
a stream from SS that isn't LIMITED to a max bitrate but is SET to a
bitrate irrespective of the source file being played. Anyone with an
idea how to do this please let me know. One would have thought that
LAME was entirely capable of doing such a "gearbox" operation, if only
we can tell it to do so.

Another point is that I notice that the Icecast output is about 3dB
down on the stream leaving VLC. Anyone any observations about this?

In addition I want to be able to insert some realtime audio DSP in the
path (eg compression and level change). Ideas?


-- 
relen
------------------------------------------------------------------------
relen's Profile: http://forums.slimdevices.com/member.php?userid=30
View this thread: http://forums.slimdevices.com/showthread.php?t=35758

_______________________________________________
discuss mailing list
discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss

Reply via email to