some audiod fixes
[paraslash.git] / README
1 Paraslash README
2 ================
3 Paraslash is an acronym for
4
5         Play, archive, rate and stream large audio sets happily
6
7 It contains the following programs:
8
9 - para_server (obligatory):
10
11         This server supports audio streaming of mp3, ogg vorbis and
12         aac files.  It listens on a tcp port and accepts commands
13         such as play, stop, pause, next from authenticated clients.
14
15         The audio stream may be sent over the network by three
16         different senders:
17
18         The http sender is recommended for public streams that can
19         be played by any player like mpg123, xmms, winamp...
20
21         The dccp sender is experimental and requires kernel support
22         for the rather new datagram congestion control protocol.
23
24         The ortp sender is recommended for LAN streaming and for
25         private streams that require authentication.
26
27         It is possible to activate more than one sender simultaneously.
28
29         para_server needs an "audio file selector" to work, mainly
30         to determine which song to stream next. There are three
31         selectors available: random, playlist and mysql. The former
32         chooses audio files randomly and  playlist can handle, well,
33         playlists. Both are always supported.
34
35         The optional mysql selector connects to a mysql server which
36         holds information on your audio files. It has several unusual
37         features, see README.mysql for details.
38
39 - para_client (obligatory):
40
41         The client program to connect to para_server.
42
43 - para_recv (optional)
44
45         A command line http/dccp/rtp stream grabber.
46
47 - para_filter (optional)
48
49         A filter program that converts from stdin and writes to
50         stdout. This one is independent from the rest of paraslash,
51         so it might be useful also for different purposes.
52
53         para_filter combines several decoders (mp3, oggvorbis, aac)
54         and a volume normalzer. New filters can be added easily due
55         to the modular design. If more than one filter is specified,
56         the given filters are 'piped' together in-memory, i.e. without
57         calling any of the read(2)/write(2)/select(2) etc. functions.
58
59 - para_write (obligatory)
60
61         A modular audio stream writer. It supports a simple file
62         writer output plugin and an optional wav/raw player for alsa.
63         Debian package: libasound2-dev
64
65 - para_audiod (optional, but recommended):
66
67         The local daemon that collects information from para_server. It
68         starts an appropriate receiver, filter and player as soon
69         as para_server announces the availability (and the type) of
70         an audio stream. para_audiod listens on a local socket and
71         sends status information about para_server and para_audiod
72         to local clients on request.
73
74 - para_audioc (optional, but recommended)
75
76         The client program which talks with para_audiod. Used to
77         control para_audiod, to receive status info, or to grab the
78         stream at any point in the filter chain.
79
80         para_audioc (hence para_audiod) is needed by para_gui,
81         para_sdl_gui and para_krell, see below.
82
83 - para_gui (optional):
84
85         Themable ncurses-based gui. It calls para_audioc and presents
86         the obtained information in an ncurses window. para_gui
87         provides key-bindings for the most common commands and new
88         key-bindings can be added easily.
89
90 - para_sdl_gui (optional):
91
92         SDL-based gui. Similar to para_gui but presents its output
93         in an X window (fullscreen mode is also available) and can
94         display jpg images on a per song basis. para_sdl_gui provides
95         an input prompt to enter arbitrary commands. However, it
96         can also be used non-interactively (e.g. as a screen saver)
97         via the -i switch.
98
99 - para_krell (optional, only useful in conjunction with the mysql selector):
100
101         A plugin for gkrellm which shows small pictures of the
102         current song. It allows you to launch 27 different commands
103         by clicking in different areas of its picture (9 small squares
104         x 3 mouse buttons).
105
106 - para_fade (optional):
107
108         A (Linux-only) alarm clock and volume-fader.
109
110 - para_dbadm (optional, only useful in conjunction with the mysql selector):
111
112         Very simple curses-based frontend which uses libmenu. Useful
113         for quickly changing the attributes of the current song
114         (e.g. from para_gui as an external command).
115
116 - para_slider (optional, only useful in conjunction with the mysql selector):
117
118         A small X application which shows a scrollbar for each
119         attribute defined in the mysql database. It creates a stream
120         definition from the values of the scrollbars. This allows
121         to smoothly change the mood of the given stream without any
122         file editing.
123
124 - bash_completion (optional):
125
126         A small bash script for inclusion in ~/.bashrc. It gives you
127         command line completion for some paraslash commands.
128
129 REQUIREMENTS:
130 ~~~~~~~~~~~~~
131 In any case you need
132
133         - gcc, the gnu compiler collection (shipped with distro): gcc-3.3
134         or newer is required.
135
136         - openssl (needed by server, client): usually shipped with
137         distro, but you might have to install the "development"
138         package as well
139
140                 http://www.openssl.org/
141
142         - software mixing, e.g. ALSA and the direct mixing plugin (dmix)
143
144 If you want to use the mysql-based audio file selector, you also need
145
146         - mysql-server
147         - mysql-client
148         - libmysqlclient
149
150 These are usually shipped with the distro but probably not installed
151 by default.
152
153 The mp3 decoder of para_filter is based on libmad:
154
155                 http://www.underbit.com/products/mad/
156
157 If you prefer to use the libmad package provided by your distributor,
158 make sure to install the corresponding development package as well.
159
160 If you want to stream ogg vorbis files you'll need:
161
162         - libogg, libvorbis, libvorbisfile, and a command line ogg vorbis
163         decoder, e.g. para_filter or ogg123.
164
165                 http://www.xiph.org/downloads/
166
167 Debian packages: libogg-dev libvorbis-dev
168
169 For aac files (m4a) you'll need libfaad. Get it at
170
171         http://www.audiocoding.com/modules/wiki/?page=AAC
172
173 Note that para_audiod still works even if no audio file support was
174 compiled in. You'll have to use the --no_default_filters option in this
175 case (and e.g. "mpg123 -" as the stream write command for mp3 streams).
176
177 If you intend to use the optional ortp streamer:
178
179         - libortp
180
181                 http://www.linphone.org/ortp/
182
183
184 For the optional SDL-based gui, the following packages must be installed:
185
186         - X (usually shipped with distro)
187
188                 http://www.x.org/
189
190         - libSDL (usually shipped with distro)
191
192                 http://www.libsdl.org/index.php
193
194         - SDL_image
195
196                 http://www.libsdl.org/projects/SDL_image/
197
198 For para_slider, the zero memory widget library is neccessary. Get it at
199
200                 http://www710.univ-lyon1.fr/~exco/ZMW/
201
202 Finally, para_krell needs
203
204         - gtk2
205
206                 http://www.gtk.org/
207
208         - gkrellm2
209
210                 http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
211
212 LICENSE:
213 ~~~~~~~~
214 Distribution of paraslash is covered by the GNU GPL. See file COPYING.
215
216 THE AUTHOR:
217 ~~~~~~~~~~~
218 Author: Andre Noll <maan@systemlinux.org>
219 Comments and bug reports are welcome.