Table of contents

Features

There are so many types of media playlists, in different formats: plain text, XML, Windows .INI or binary.
I have the need to share, and thus often convert playlist files for different media players.
Why not you?
That's why I launched this project, mid-2008.
Here follows a list of the major features of Lizzy:

First you have to download and install the Sun Java Runtime Environment (JRE) 6 (http://java.sun.com/javase/downloads), or any compatible JRE.
Then, two choices, depending on whether you just want to use the Lizzy tools, or you want to develop a bigger project using in particular the Lizzy API:

User: open a command prompt (Windows) or a shell terminal (Unix-like). Change the directory to the Lizzy binary distribution root.
The usage of the Lizzy tools can be obtained through the following commands:

"Transcode" (Windows) or "sh Transcode.sh" (Unix). This tool converts an input playlist to a (possibly new) format. A copy of the last recent usage is located here.
Example: "Transcode -o new-playlist.xspf old-playlist.m3u".

"AddToPlaylist" (Windows) or "sh AddToPlaylist.sh" (Unix). This tool adds URLs, files and/or directories to a (possibly new) single playlist. A copy of the last recent usage is located here.
Example: "AddToPlaylist -o new-playlist.asx music-directory this-file.mp3 anotherfile.wav".

CAUTION: in order to use FFMPEG as content metadata provider, you have to put the needed dynamic libraries in the "lib" folder:

On a Windows platform, they are "avcodec-51.dll", "avformat-51.dll" and "avutil-49.dll" (you can find them here);

On a Linux platform, they are "libavcodec.so", "libavformat.so" and "libavutil.so".

Developer: a sample introducing the main API methods is described here.
For a more complete usage, the best is to to refer to the source code of the Transcode or AddToPlaylist class, i.e. the command-line tools.

The library is built on the notion of service provider interface (SPI):
each "specific" playlist format (eg. ASX or SMIL) is associated with its own playlist provider implementation, through a generic interface.
Thus one can easily add, remove or modify a given playlist support.
At the center of the API lays a format-agnostic description of the playlist.
This "generic" playlist representation allows exchanges between different playlist providers, while retaining as much as possible their specificities.
Some design elements can be found there.
The Java design involves some well-known design patterns, such as the visitor, the factory, the facade, etc.

In order to build Lizzy from the sources, you first have to download and install the following tools:

The Sun Java SE Development Kit (JDK) 6: http://java.sun.com/javase/downloads.
Install the JDK for example in directory 'C:\Program Files\Java\jdk1.6.0_xx' (on Windows) or '/usr/java/jdk1.6.0_xx' (on *nix), where 'xx' must be replaced by the appropriate update number (21 in my case).
Set the following system environment variables:
on Windows,
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_xxPATH=%PATH%;%JAVA_HOME%\bin
on *nix,
export JAVA_HOME='/usr/java/jdk1.6.0_xx'export PATH=$PATH:$JAVA_HOME/bin

I haven't found yet any similar API, both open source and extensible, supporting such a wide range of disparate formats (from the simple M3U format to the rich SMIL format), and still easy to use.
If you think you have one, or know one, please contact me: I would be very pleased to list you there.

The table below describes the additional 3d-party tools and libraries used during the development process (in particular to build the distribution).
In each mentioned directory, you will find the associated license.