para_server (obligatory)
-----------------------
-This server supports audio streaming of mp3, ogg vorbis and aac files.
-It listens on a tcp port and accepts commands such as play, stop,
-pause, next from authenticated clients.
+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.
-The audio stream may be sent over the network by three different
-senders:
+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, winamp...
+ * 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 dccp sender is experimental and requires kernel support for the
+ rather new datagram congestion control protocol.
-The ortp sender is recommended for LAN streaming and for private
-streams that require authentication.
+ * 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 song to stream next. There are three selectors available:
-random, playlist and mysql. The former chooses audio files randomly
-and playlist can handle, well, playlists. Both are always supported.
+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 optional mysql selector connects to a mysql server which holds
-information on your audio files. It has several unusual features,
-see README.mysql for details.
+ * 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.
+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.
+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. This
-one is independent from the rest of paraslash, so it might be useful
-also for different purposes.
+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 normalzer. New filters can be added easily due to the modular
+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 plugin
-and optional wav/raw players for alsa (linux-only, Debian package:
-libasound2-dev) and Mac OS.
+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
-starts an appropriate receiver, filter and player as soon as
-para_server announces the availability (and the type) of an audio
-stream. para_audiod listens on a local socket and sends status
-information about para_server and para_audiod to local clients
-on request.
+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)
- gcc, the gnu compiler collection (shipped with distro): gcc-3.3
or newer is required.
+ - gnu make
- openssl (needed by server, client): usually shipped with
- distro, but you might have to install the "development"
- package as well: http://www.openssl.org/
+ 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
just download libmad from http://www.underbit.com/products/mad/
For ogg vorbis streams you'll need libogg, libvorbis, libvorbisfile,
-and a command line ogg vorbis decoder, e.g. para_filter or ogg123.
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/