Getting Started with Theora-Java

Theora-Java contains 2 approaches to using theora in Java :

  1. theora-jna : using JNA to call the native libraries or
  2. Patched version of jheora and a sample program to use jheora, jogg, and jorbis.



theora-jna is a Java wrapper around theora, using JNA. It assumes that dynamic libraries for ogg, vorbis, and theora have been compiled, and are in your library path. It does not require jheora, jogg, or jorbis to be in your classpath.

Step 1 : Get Ogg, Vorbis and Theora sources from

This library was built/tested with :

  • libtheora-1.0alpha7
  • libogg-1.1.3
  • libvorbis-1.1.2


Step 2 : Build/install by running the standard build procedure in each of the 3 directories :



sudo make install


Step 3 : Run the sample program with a URL to a media file (file://, http://, etc.) as the first parameter, example :

java -cp ./theora-java.jar:./lib/jna.jar net.sf.theora_java.jna.example.PlayerExample


This should show the video and/or play the audio. You may also need to set your library path in order to find the installed theora dynamic libraries, for example :

export LD_LIBRARY_PATH=/usr/local/lib


jheora (patched)

jheora is part of the Cortado streaming applet available from here. And while the Cortado applet is GPL, jheora is LGPL. Fluomotion does not distribute a jheora jar, so the sources are included in theora-java. Additionally, a few minor changes have been made to make private structure members public, to make the functionality closer to what theora-jna has.

jheora is dependent on jogg and jorbis from jcraft, available from here. The sources and jars are included here as a convenience.

The same PlayerExample used for theora-jna has been modified to work with jheora. It takes a URL as a parameter. To run it:

java -cp ./theora-java.jar:./lib/jheora-patch.jar:./lib/jogg-0.0.7.jar:./lib/jorbis-0.0.15.jar