X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=README;h=b311307d1e54177adec3b43a05c777028ca95b57;hp=02d647a9306cf163f441a816794d00fcf82fd90a;hb=8fe757457fa56a6a1c9f17c466391d790ff58c58;hpb=a5937a0eca5ada5cb2332dbce676b327aa9e37ee diff --git a/README b/README index 02d647a9..b311307d 100644 --- a/README +++ b/README @@ -12,52 +12,76 @@ It contains the following programs: 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 crypted +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 @@ -65,24 +89,31 @@ 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 plugin 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 plugin +(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) @@ -161,8 +192,9 @@ 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 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 @@ -180,7 +212,6 @@ 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, -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/