README 6.76 KB
Newer Older
conrad's avatar
conrad committed
1 2
About Oggz
----------
3

conrad's avatar
conrad committed
4 5 6 7 8 9 10 11 12 13 14
Oggz comprises liboggz and the tool oggz, which provides commands to
inspect, edit and validate Ogg files. The oggz-chop tool can also be
used to serve time ranges of Ogg media over HTTP by any web server that
supports CGI.

liboggz is a C library for reading and writing Ogg files and streams.
It offers various improvements over the reference libogg, including
support for seeking, validation and timestamp interpretation. Ogg is
an interleaving data container developed by Monty at Xiph.Org,
originally to support the Ogg Vorbis audio format but now used for
many free codecs including Dirac, FLAC, Speex and Theora.
conrad's avatar
conrad committed
15 16 17 18 19 20 21 22

Dependencies
------------

Oggz depends only on libogg, available in most free software
distributions, or in source form at: http://xiph.org/downloads/

Support is built-in for parsing the headers of and seeking to time
conrad's avatar
conrad committed
23
positions in Ogg Dirac, FLAC, Speex, Theora and Vorbis. Oggz is also
conrad's avatar
conrad committed
24 25 26 27 28 29
compatible with Annodex streams, and supports seeking on all tracks
described in an Ogg Skeleton track.

Installation
------------

30
Release archives can be installed using the conventional commands:
conrad's avatar
conrad committed
31 32 33 34 35

    $ ./configure
    $ make check
    $ sudo make install

36 37 38
sequence. Configuration details are in the file INSTALL. If you obtained
this source by svn, first run "./autogen.sh" to create the configure script,
then run the above commands.
conrad's avatar
conrad committed
39 40 41 42 43 44

Read the file README.win32 for installing under MS Windows, and
README.symbian for information about building for Symbian devices.

Source layout
-------------
45 46 47 48

The src/ directory contains the source code.
The src/liboggz/ directory has the library source code.
The src/tools/ directory has some command line tools for analysing
conrad's avatar
conrad committed
49 50 51
               Ogg files.
The src/examples/ directory contains example programs using liboggz.
The src/tests/ directory contains unit and functional tests.
52 53 54 55 56 57 58 59 60

The include/ directory contains the oggz include files that will
be installed into the system include directory.

The doc/ directory contains some documentation for oggz. The
subdirectory liboggz is autocreated by doxygen from comments contained
in the source code.

The win32/ directory contains the files necessary to compile the
conrad's avatar
conrad committed
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
library and tools for MS Windows.

The symbian/ directory contains the files necessary to compile the
library for Symbian.


Programming with liboggz
------------------------

liboggz supports the flexibility afforded by the Ogg file format while
presenting the following API niceties:

    * Full API documentation

    * Comprehensive test suite of read, write and seeking behavior.
    The entire test suite can be run under valgrind if available.

    * Developed and tested on GNU/Linux, Darwin/MacOSX, Win32 and
    Symbian OS. May work on other Unix-like systems via GNU autoconf.
    For Win32: nmake Makefiles, Visual Studio .NET 2003 solution files
    and Visual C++ 6.0 workspace files are provided in the source
    distribution.

    * Strict adherence to the formatting requirements of Ogg bitstreams,
    to ensure that only valid bitstreams are generated; writes can fail
    if you try to write illegally structured packets.

    * A simple, callback based open/read/close or open/write/close
    interface to raw Ogg files.

    * Writing automatically interleaves with packet queuing, and provides
    callback based notification when this queue is empty

    * A customisable seeking abstraction for seeking on multitrack Ogg
    data. Seeking works easily and reliably on multitrack and multi-codec
    streams, and can transparently parse Theora, Speex, Vorbis, FLAC,
    PCM, CMML and Ogg Skeleton headers  without requiring linking to those
    libraries. This allows efficient use on servers and other devices
    that need to parse and seek within Ogg files, but do not need to do
    a full media decode.

Full documentation of the liboggz API, customization and installation,
and mux and demux examples can be read online at:

    http://www.annodex.net/software/liboggz/html/

conrad's avatar
conrad committed
107 108 109 110 111 112
oggz tool
---------

Usage: oggz <subcommand> [options] filename ...

oggz is a commandline tool for manipulating Ogg files. It supports
113 114
multiplexed files conformant with RFC3533. Oggz can parse headers for CELT,
CMML, Dirac, FLAC, Kate, PCM, Speex, Theora and Vorbis, and can read and write
conrad's avatar
conrad committed
115 116 117 118 119 120
Ogg Skeleton logical bitstreams.

Commands:
  help          Display help for a specific subcommand (eg. "oggz help chop")

Reporting:
121
  codecs        Display the codecs present in an Ogg file
conrad's avatar
conrad committed
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
  diff          Hexdump the packets of two Ogg files and output differences.
  dump          Hexdump packets of an Ogg file, or revert an Ogg file from
                such a hexdump.
  info          Display information about one or more Ogg files and their
                bitstreams.
  scan          Scan an Ogg file and output characteristic landmarks.
  validate      Validate the Ogg framing of one or more files.

Extraction:
  rip           Extract one or more logical bitstreams from an Ogg file.

Editing:
  chop          Extract the part of an Ogg file between given start and/or
                end times.
  comment       List or edit comments in an Ogg file.
  merge         Merge Ogg files together, interleaving pages in order of
                presentation time.
  sort          Sort the pages of an Ogg file in order of presentation time.

Miscellaneous:
  known-codecs  List codecs known by this version of oggz
conrad's avatar
conrad committed
143

144 145 146 147
The script bash-completion/oggz enables completion of tool options and codec
names when using the bash shell. Source it from your .profile, or install it
in /etc/bash_completion.d to enable it system-wide.

148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169

oggz-chop: General usage and CGI installation
---------------------------------------------

oggz-chop extracts the part of an Ogg file between given start and/or end
times. The output file contains copies of the headers of the input file, and
all the codec data required to correctly decode the content between the start
and end times specified on the commandline. For codecs with data dependencies
like video keyframes, the keyframe prior to the starting time will be included
in the output.

An Apache server can be configured to use oggz-chop to handle all Ogg files
(or, all Ogg files in a particular directory). An example Apache configuration
is in the liboggz source tree, along with a script for installing it on a
Debian server.

The oggz-chop binary checks if it is being run as a CGI script (by checking
some environment variables), and if so acts based on the CGI query parameter
t=, much like mod_annodex. It accepts all the time specifications that
mod_annodex accepts (npt and various smpte framerates), and start and end
times separated by a /.

conrad's avatar
conrad committed
170 171 172 173 174 175 176 177
License
-------

Oggz is Free Software, available under a BSD style license.

More information is available online at the Oggz homepage:

    http://www.annodex.net/software/liboggz/
178

conrad's avatar
conrad committed
179
enjoy :)
180

conrad's avatar
conrad committed
181 182
--
Conrad Parker
conrad's avatar
conrad committed
183
http://www.annodex.net/