Lizzy v1.1.1

Lizzy is an open source Java library allowing to parse, create, edit, convert and save almost any type of multimedia playlist.
The currently supported formats are the following: M3U/M3U8/M4U/RAM, ASX/WMX/WVX/WAX, WPL, XSPF, SMIL, RMP, PLS, B4S/BPL, RSS/MediaRSS, Atom, PLIST, MPCPL, Hypetape, KPL, PLA and PLP (see details here).
Two versatile command-line tools are also available (see the Getting started guide).

Table of contents

  1. Features
  2. License
  3. Download
  4. Documentation
  5. Getting started
  6. Details
  7. Build
  8. Playlist information
  9. Other solutions
  10. Third-party libraries


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:


Lizzy is licensed through a BSD-like licensing model: see the text here.


Through the dedicated SourceForge page.


Getting started

First you have to download and install the Sun Java Runtime Environment (JRE) 6 (, 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:


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.

The main technologies involved in this project are the following: Please refer to “Third-party libraries” for more details and credits.

XML playlists are marshalled (created) and unmarshalled (parsed) through 3 different means:
  1. Through JAXB: see the RMP format.
  2. By using directly any available XML parser: see the KPL format.
  3. Through the Castor framework: see all other XML-based formats.


In order to build Lizzy from the sources, you first have to download and install the following tools:
  1. The Sun Java SE Development Kit (JDK) 6:
    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_xx
    on *nix,
    export JAVA_HOME='/usr/java/jdk1.6.0_xx'
    export PATH=$PATH:$JAVA_HOME/bin
  2. Apache Ant 1.8.1:
    Install Ant for example in directory 'C:\apache-ant-1.8.1' (on Windows) or '/usr/java/apache-ant-1.8.1' (on *nix).
    Set the following system environment variables:
    on Windows,
    on *nix,
    export ANT_HOME='/usr/java/apache-ant-1.8.1'
    export PATH=$PATH:$ANT_HOME/bin
Open a command prompt or a shell terminal and change to the root directory of the Lizzy source distribution.
Execute the following command in order to build the distribution:
For a more complete list of build targets, type 'ant -projecthelp': this Ant target will display the build system help.

Playlist information

You will find here different Web links to playlist-related information, that have been of particular interest during my work:

Other solutions

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.

Third-party libraries

The next table describes all 3d-party libraries necessary to use the Lizzy library. All the associated license files may be found in the directory docs/licenses of the binary project distribution.

Component Version Web Specific notices
Castor 1.3.1 Copyright 2004-2005 Werner Guttmann
Apache Commons Logging 1.1.1 This product includes software developed by The Apache Software Foundation (
FFMPEG-Java 20070916-0351 -
JNA (Java Native Access) 3.0 -
Used only by the Lizzy command-line tools:
args4j 2.0.12 Copyright (c) 2003, Kohsuke Kawaguchi. All rights reserved.

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.

Component Version Web Directory Comment
Apache Ant 1.8.1 - -
XDoclet 2 2.0.6 ext/xdoclet2 -
Apache Commons Beanutils 1.7.0 ext/xdoclet2 Used by XDoclet 2
Apache Commons Collections 3.2 ext/xdoclet2 Used by XDoclet 2
Apache Commons Jelly 1.0 ext/xdoclet2 Used by XDoclet 2
Apache Commons JEXL 1.0 ext/xdoclet2 Used by XDoclet 2
dom4j 1.6 ext/xdoclet2 Used by XDoclet 2
Generama 1.2.3 ext/xdoclet2 Used by XDoclet 2
Jaxen 1.1.3 ext/jaxen Used by XDoclet 2 and PMD
NanoContainer 1.0 beta 3 ext/xdoclet2 Used by XDoclet 2
ObjectWeb ASM 3.2 ext/pmd Used by PMD
PicoContainer 1.0 ext/xdoclet2 Used by XDoclet 2
PMD 4.2.5 ext/pmd -
QDox 1.6-SNAPSHOT ext/xdoclet2 Used by XDoclet 2
Velocity 1.4 ext/xdoclet2 Used by XDoclet 2
Separate tools:
Vim 7.3 - A special and big “thank you” to Bram Moolenaar and his wonderful tool, which I'm using since so many years!
Sun JDK 6 - -
Jude Community 5.2.1 - -

Get Lizzy at Fast, secure and Free Open Source software downloads   Vim logo

Copyright © 2008-2009 Christophe Delory