X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/22b9fa74de8e80471a5033ea067d3b360930b91d..10a6c925566711afc44db711fb10d6a4a0c70a91:/README.streams diff --git a/README.streams b/README.streams index aa4c26b..24756d0 100644 --- a/README.streams +++ b/README.streams @@ -1,59 +1,79 @@ -DisOrder and Republishing Internet Streams -========================================== +* Introduction -DisOrder doesn't have any built-in support for playing streams but you can make -it do so. I use the following in my configuration file: +This file describes DisOrder's relationship to several different things that +get called 'streams'. - player /export/radio/*.oggradio shell 'xargs ogg123 -q < "$TRACK"' - collection fs iso-8859-1 /export/radio +* RTP Streaming -After setting this up you'll need to re-read the config file and provoke a -rescan: +DisOrder is capable of transmitting RTP streams over a suitable network. - disorder reconfigure rescan /export/radio +** Server Setup -/export/radio contains a file for each stream, containing the URL to use: +To enable this make sure that all players use the speaker process, i.e. execraw +rather than exec (or it won't work properly) and configure the network speaker +backend: - lyonesse$ cat /export/radio/CUR1350.oggradio - http://cur.chu.cam.ac.uk:8000/cur.ogg + api network + broadcast 172.17.207.255 9003 + broadcast_from 172.17.207.2 9002 -You'll probably want to prevent random play of streams: +The destination address (broadcast) can be: + - a broadcast address for a local network + - a multicast address - disorder set /export/radio/CUR1350.oggradio pick_at_random 0 +The source address (broadcast_from) is optional but may be convenient in some +cases. -You can then queue a stream like any other track. It won't automatically -interrupt the playing track, you have to scratch it manually. Go back to -normal play by scratching the stream. +If the destination is a multicast address then you should set the TTL, for +instance: + multicast_ttl 10 -RTP Streaming -============= +(The destination can also be a unicast address but that's not a tested +configuration.) -DisOrder is now capable to transmitting RTP streams over a suitable network. -To enable this make sure that allplayers use the speaker process, i.e. execraw -rather than exec (or it won't work properly) and configure the network speaker -backend: +scripts/setup now knows how to do basic setup for network play. - speaker_backend network - broadcast 172.17.207.255 9003 - broadcast_from 172.17.207.2 9002 +** Playing The Stream -broadcast_from is optional but may be convenient for some cases. +To play, use the disorder-playrtp client. If the destination address was a +unicast or broadcast address then: -To play, use the disorder-playrtp client. + disorder-playrtp 9003 - disorder-playrtp 0.0.0.0 9003 +If the destination address was a multicast address then you must specify that, +for instance: + + disorder-playrtp 224.2.3.4 9003 + +If the client machine has a DisOrder configuration file allowing disorder(1) to +connect to the server then the parameters are unnecessary: disorder-playrtp +will figure out the details automatically. + +** Disobedience + +Disobedience is capable of running disorder-playrtp in the background (provided +it is installed); look for the speaker icon. If it detects that the server is +using network play then its volume control will apply to the local volume, not +the server's volume. + +If you run into trouble look for *.log files in the ~/.disorder directory. + +** Limitations Currently only 16-bit 44100Hz stereo is supported, which requires about -1.4Mbit/s. Possibly other lower-quality but lower-bandwidth encodings will be -supported in future. +1.4Mbit/s. At the time of writing I've found this to work fine on 100Mbit/s +ethernet and had reports of success with 10Mbit/s ethernet, but have not had +any success with wireless. -If you have a too-recent version of sox you may need to set the sox_generation -option. +Possibly other lower-quality but lower-bandwidth encodings will be supported in +future. + +If you have a very recent version of sox you may need to set the sox_generation +option. See disorder_config(5). -Icecast Streaming -================= +* Icecast Streaming This can be achieved using the speaker_command option and Icecast (see http://www.icecast.org/). It will only work if you use the speaker process, @@ -73,35 +93,34 @@ where ices.xml is: 4 0 - - lyonesse - Various - lyonesse disorder output - - - stdinpcm - 44100 - 2 - 1 - /var/disorder/icedata - - - lyonesse.anjou.terraraq.org.uk - 8000 - SOURCE PASSWORD HERE - /disorder.ogg - 2 - 5 - 80 - - 64000 - 44100 - 2 - 8820 - - - - + + lyonesse + Various + lyonesse disorder output + + + stdinpcm + 44100 + 2 + 1 + /var/disorder/icedata + + + lyonesse.anjou.terraraq.org.uk + 8000 + SOURCE PASSWORD HERE + /disorder.ogg + 2 + 5 + 80 + + 64000 + 44100 + 2 + 8820 + + + This doesn't seem to get on very well with pausing but you're unlikely to want @@ -112,8 +131,38 @@ behind the 'current' time, watch this space for a fix (or contribute one!) If you have a too-recent version of sox you may need to set the sox_generation option. +Mark Wooding contributed the original support for this but it's been modified +enough that he probably shouldn't be blamed for any bugs in the current code. + + +* DisOrder and Republishing Internet Streams + +DisOrder doesn't have any built-in support for playing streams but you can make +it do so. I use the following in my configuration file: + + player /export/radio/*.oggradio shell 'xargs ogg123 -q < "$TRACK"' + collection fs iso-8859-1 /export/radio + +After setting this up you'll need to re-read the config file and provoke a +rescan: + + disorder reconfigure rescan /export/radio + +/export/radio contains a file for each stream, containing the URL to use: + + lyonesse$ cat /export/radio/CUR1350.oggradio + http://cur.chu.cam.ac.uk:8000/cur.ogg + +You'll probably want to prevent random play of streams: + + disorder set /export/radio/CUR1350.oggradio pick_at_random 0 + +You can then queue a stream like any other track. It won't automatically +interrupt the playing track, you have to scratch it manually. Go back to +normal play by scratching the stream. + Local Variables: -mode:text +mode:outline fill-column:79 End: