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

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:

License

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

Download

Through the dedicated SourceForge page.

Documentation

Getting started

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:

Details

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.

Build

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: 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_xx
    PATH=%PATH%;%JAVA_HOME%\bin
    on *nix,
    export JAVA_HOME='/usr/java/jdk1.6.0_xx'
    export PATH=$PATH:$JAVA_HOME/bin
  2. Apache Ant 1.8.1: http://ant.apache.org/bindownload.cgi
    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,
    ANT_HOME=C:\apache-ant-1.8.1
    PATH=%PATH%;%ANT_HOME%\bin
    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:
        ant
        
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 www.castor.org Copyright 2004-2005 Werner Guttmann
Apache Commons Logging 1.1.1 commons.apache.org/logging This product includes software developed by The Apache Software Foundation (http://www.apache.org/)
FFMPEG-Java 20070916-0351 fmj-sf.net/ffmpeg-java/getting_started.php -
JNA (Java Native Access) 3.0 jna.dev.java.net -
Used only by the Lizzy command-line tools:
args4j 2.0.12 args4j.dev.java.net 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
Ant-related:
Apache Ant 1.8.1 ant.apache.org - -
XDoclet 2 2.0.6 xdoclet.codehaus.org ext/xdoclet2 -
Apache Commons Beanutils 1.7.0 commons.apache.org/beanutils ext/xdoclet2 Used by XDoclet 2
Apache Commons Collections 3.2 commons.apache.org/collections ext/xdoclet2 Used by XDoclet 2
Apache Commons Jelly 1.0 commons.apache.org/jelly ext/xdoclet2 Used by XDoclet 2
Apache Commons JEXL 1.0 commons.apache.org/jexl ext/xdoclet2 Used by XDoclet 2
dom4j 1.6 www.dom4j.org ext/xdoclet2 Used by XDoclet 2
Generama 1.2.3 generama.codehaus.org ext/xdoclet2 Used by XDoclet 2
Jaxen 1.1.3 jaxen.codehaus.org ext/jaxen Used by XDoclet 2 and PMD
NanoContainer 1.0 beta 3 nanocontainer.codehaus.org ext/xdoclet2 Used by XDoclet 2
ObjectWeb ASM 3.2 asm.ow2.org ext/pmd Used by PMD
PicoContainer 1.0 www.picocontainer.org ext/xdoclet2 Used by XDoclet 2
PMD 4.2.5 pmd.sourceforge.net ext/pmd -
QDox 1.6-SNAPSHOT qdox.codehaus.org ext/xdoclet2 Used by XDoclet 2
Velocity 1.4 velocity.apache.org ext/xdoclet2 Used by XDoclet 2
Separate tools:
Vim 7.3 www.vim.org - A special and big “thank you” to Bram Moolenaar and his wonderful tool, which I'm using since so many years!
Sun JDK 6 java.sun.com/javase - -
Jude Community 5.2.1 jude.change-vision.com - -

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

Copyright © 2008-2009 Christophe Delory