libVideoFile


Overview
  • Handling of video and audio data files.
    All input and output to the files is done by libVideoFile. Data can be read on a frame basis, where each frame contains a video image or a bunch of audio data with a given time span.
    Seeking is done on a frame accurate level when reading raw data. When reading uncompressed data, seeking in audio streams is sample accurate.
  • Decode and encode video and audio data.
    All data can be accessed either in its raw form thru a codec object. When opening a file, the needed codec is created automatically. Uncompressed video frames and audio samples can be read directly. For writing the desired codec needs to be specified when creating new tracks.
  • All functionality is provided by modules which are loaded at runtime. This includes the input/output backends for the various file types and the codecs. This way it is possible to add new codecs and fileformats without altering any of libVideoFile's code. All plugins are C++ objects which are derived form their respective general classes.
File formats
  • Avi
    The Avi IO-Module can read and write files >2GB using the OpenDML extensions to the avi-file format. The extensions are used automatically when necessary.
  • Quicktime
    There are two io-Modules Quicktime included. Both rely on 3rd party libraries.
    • Quicktime: This IO-module use the quicktime4linux library for file handling (quicktime4linux). To install this plugin, when running configure the parameter -enable-quicktime have to be used. This module is outdated and probably will not work with recent versions of quicktime4linux.
    • QT: This IO-module uses OpenQuicktime for file handling. For now this works with Version 2.0.0.a1. To install this plugin, when running configure the parameter -enable-openquicktime should be used.
  • Wav (8-bit and 16-bit pcm only)
  • mp3
    Read and write mp3 and mp2 files.
  • yuv4mpeg
    This is the video format of the mjpeg-tools package. Streaming to stdin/stdout is possible.
  • MpegVideo
    This reads and writes Mpeg1/2 Video-Streams. Streaming to stdin/stdout is possible.
  • Mpeg
    This reads and writes Mpeg1/2 System-Streams. Streaming to stdin/stdout is possible. However when reading from stdin the Seek()-functions provide not full functionality.
  • Dvd
    This IO-module uses libdvdread. The library is included and build automatically. The DVDs are handled as Mpeg system-streams, so menus are not possible. Navigation is supported by selecting Title and Chapter numbers.
Audio-Codecs
  • pcm 16-bit, mono and stereo
  • mp2/mp3
  • ac3 (reading is limited to stereo so far)
  • for Quicktime: everything provided by OpenQuicktime
Video-Codecs