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