webplay creates from a collection of mp3s and Ogg-Vorbis files (directory, mysql or postgres database) a Web-based jukebox with support for multiple independent streams. If lame and oggdec/oggenc are available, it can change the codec and bit-rate of a file in real time to a selectable value. Each user controls their stream via a web interface and can skip back, forward or to a specific track, increment or decrement the bitrate and check the current playlist, song or bitrate. Playlists can be looped, randomized, played locally on the webserver, edited, deleted, reused and renamed.

webplay is split into three parts: the first creates XML and javascript caches describing the mp3 collection, the second uses that cache to create and edit playlists and the third streams playlists.

for flexibility the caches can be created three ways: from a mySQL/postgres database (scripts are included to create, populate & search the database), from a free-form directory of files sorted by id3 tags and filenames or from a directory hierarchy ($pathto/artist/album/song). two interchangeable playlist editors are provided, one javascript and the other java 1.3 (applet or standalone application). the streamer is written in C for a small footprint. all of it runs within the framework of a webserver.

the use for which it was originally written was streaming files from home to work via DSL. using lame or oggdec/oggenc it steps the bitrate down (and even changes the codec) to something reasonable like 64k while still using 192k files as source.

check out the demos

you may also want to check out nic's "unsupported by dave" webplay modifications

webplay started as a project in late 1999 with a particuliarly ugly proof-of-concept (coworkers mocked me, god bless them). the javascript playlist editor was created april 2000 and was first released june 11, 2000. the java playlist editor was released in version 1.00a november 25, 2001. development is primarily on OpenBSD, but i have access to and test on Yellow Dog Linux, RedHat Linux, MacOS X and IRIX. lack of portability is a bug (well, Unix anyway) so please mail me with problems.