chiark / gitweb /
More memory hygeine
[disorder] / README.streams
1 * Introduction
2
3 This file describes DisOrder's relationship to several different things that
4 get called 'streams'.
5
6 * RTP Streaming
7
8 DisOrder is capable of transmitting RTP streams over a suitable network.
9
10 ** Server Setup
11
12 To enable this make sure that all players use the speaker process, i.e. execraw
13 rather than exec (or it won't work properly) and configure the network speaker
14 backend:
15
16     api network
17     broadcast 172.17.207.255 9003
18     broadcast_from 172.17.207.2 9002
19
20 The destination address (broadcast) can be:
21    - a broadcast address for a local network
22    - a multicast address
23
24 The source address (broadcast_from) is optional but may be convenient in some
25 cases.
26
27 If the destination is a multicast address then you should set the TTL, for
28 instance:
29
30    multicast_ttl 10
31
32 (The destination can also be a unicast address but that's not a tested
33 configuration.)
34
35 scripts/setup now knows how to do basic setup for network play.
36
37 ** Playing The Stream
38
39 To play, use the disorder-playrtp client.  If the destination address was a
40 unicast or broadcast address then:
41
42    disorder-playrtp 9003
43
44 If the destination address was a multicast address then you must specify that,
45 for instance:
46
47    disorder-playrtp 224.2.3.4 9003
48
49 If the client machine has a DisOrder configuration file allowing disorder(1) to
50 connect to the server then the parameters are unnecessary: disorder-playrtp
51 will figure out the details automatically.
52
53 ** Disobedience
54
55 Disobedience is capable of running disorder-playrtp in the background (provided
56 it is installed); look for the speaker icon.  If it detects that the server is
57 using network play then its volume control will apply to the local volume, not
58 the server's volume.
59
60 If you run into trouble look for *.log files in the ~/.disorder directory.
61
62 ** Limitations
63
64 Currently only 16-bit 44100Hz stereo is supported, which requires about
65 1.4Mbit/s.  At the time of writing I've found this to work fine on 100Mbit/s
66 ethernet and had reports of success with 10Mbit/s ethernet, but have not had
67 any success with wireless.
68
69 Possibly other lower-quality but lower-bandwidth encodings will be supported in
70 future.
71
72 If you have a very recent version of sox you may need to set the sox_generation
73 option.  See disorder_config(5).
74
75
76 * Icecast Streaming
77
78 This can be achieved using the speaker_command option and Icecast (see
79 http://www.icecast.org/).  It will only work if you use the speaker process,
80 i.e. execraw for everything.
81
82 I used:
83
84   speaker_command "ices2 /etc/disorder/ices.xml"
85
86 where ices.xml is:
87
88   <?xml version="1.0"?>
89   <ices>
90       <background>0</background>
91       <logpath>/var/log/ices</logpath>
92       <logfile>disorder.log</logfile>
93       <loglevel>4</loglevel>
94       <consolelog>0</consolelog>
95       <stream>
96           <metadata>
97               <name>lyonesse</name>
98               <genre>Various</genre>
99               <description>lyonesse disorder output</description>
100           </metadata>
101           <input>
102               <module>stdinpcm</module>
103               <param name="rate">44100</param>
104               <param name="channels">2</param>
105               <param name="metadata">1</param>
106               <param name="metadatafilename">/var/disorder/icedata</param>
107           </input>
108           <instance>
109               <hostname>lyonesse.anjou.terraraq.org.uk</hostname>
110               <port>8000</port>
111               <password>SOURCE PASSWORD HERE</password>
112               <mount>/disorder.ogg</mount>
113               <reconnectdelay>2</reconnectdelay>
114               <reconnectattempts>5</reconnectattempts>
115               <maxqueuelength>80</maxqueuelength>
116               <encode>
117                   <nominal-bitrate>64000</nominal-bitrate>
118                   <samplerate>44100</samplerate>
119                   <channels>2</channels>
120                   <flush-samples>8820</flush-samples>
121               </encode>
122           </instance>
123       </stream>
124   </ices>
125
126 This doesn't seem to get on very well with pausing but you're unlikely to want
127 to pause a stream in any case.  I used IceCast 2.3.1 and Ices 2.0.1.  You can
128 play the stream with XMMS or whatever.  The total setup seems to play rather
129 behind the 'current' time, watch this space for a fix (or contribute one!)
130
131 If you have a too-recent version of sox you may need to set the sox_generation
132 option.
133
134 Mark Wooding contributed the original support for this but it's been modified
135 enough that he probably shouldn't be blamed for any bugs in the current code.
136
137
138 * DisOrder and Republishing Internet Streams
139
140 DisOrder doesn't have any built-in support for playing streams but you can make
141 it do so.  I use the following in my configuration file:
142
143  player /export/radio/*.oggradio shell 'xargs ogg123 -q < "$TRACK"'
144  collection fs iso-8859-1 /export/radio
145
146 After setting this up you'll need to re-read the config file and provoke a
147 rescan:
148
149   disorder reconfigure rescan /export/radio
150
151 /export/radio contains a file for each stream, containing the URL to use:
152
153  lyonesse$ cat /export/radio/CUR1350.oggradio
154  http://cur.chu.cam.ac.uk:8000/cur.ogg
155
156 You'll probably want to prevent random play of streams:
157
158  disorder set /export/radio/CUR1350.oggradio pick_at_random 0
159
160 You can then queue a stream like any other track.  It won't automatically
161 interrupt the playing track, you have to scratch it manually.  Go back to
162 normal play by scratching the stream.
163
164
165 Local Variables:
166 mode:outline
167 fill-column:79
168 End: