AvTranscoder  0.9.4
C++APIforLibav/FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
AvTranscoder

An High Level API to transform medias.
Based on FFMpeg / libav projects.

Links

github:https://github.com/avTranscoder/avTranscoder
openhub:https://www.openhub.net/p/avTranscoder
travis-ci:https://travis-ci.org/avTranscoder/avTranscoder
coverity-scan:https://scan.coverity.com/projects/2626

Authors

  • Marc-Antoine Arnaud
  • Valentin Noël
  • Clément Champetier

Main features

The library is here to provide a simple managment of the Transform process.
Main features attending are:

  • process each stream without different calls
  • specify stream process before the begin of the process
  • minimize process: only rewrap, or transcode without transformation if possible
  • manage different length of stream (generate silence/black)
  • overload of each sub-component for specific integration, like proprietary wrapper
  • multi-languages usages (C++, Java, Python)

High Level API

Transcoder

The library provide the Transcoder class, which was the highest level of managment.
This classe manage progress of process for each StreamTranscoder.
Each StreamTranscoder definition can be added to the Transcoder.
After declaration, the process() method can process file, which call processFrame() in loop.

StreamTranscoder

The StreamTranscoder will be here to abstract call for different case as:

  • simple rewrap stream
  • transcode stream (decoding, transform and encoding)
  • encode from dummy (silence/black or external input source), without decoding step

Each StreamTranscoder is able to process a frame, and in background process a rewrap or the transcode process.

Lowest API

InputFile

This object manage the input media, providing the analisys methods to get metadatas on wrapper and each streams.
It also the entry point to get the InputStream which was the coded stream.

OutputFile

The equivalent to the InputFile is the OutputFile. Each output stream require a decalaration, needed to wrote headers of files (wrote during the beginWrap() call).
As the InputFile provide the InputStream to describe stream, the OutputFile as his OutputStream to put coded stream into the output file.
Using one InputStream and one OutputStream, each DataStream can be passed to provide a rewrap process.

InputEssence

The InputEssence provide every time an image, from a coded stream or from an external buffer.
It's allow the possiblity to generate silence or black stream, or also switch between the coded stream and a factice (to complete stream with different durations).
The switch between source was managed inside the StreamTranscoder class.

OutputEssence

As the InputEssence can decode the stream, the OutputEssence will encode our images to provide the coded stream.
It's the encoder cofigured with some Profile.

EssenceTransform

For adapt some images to the output format, some transformation can be done.
This step will only provide pixel/sample transformation (point to point transform). No resize, resampling can be applyed in this step.

Low API

Each component of the Lowest API call method present in the libav/ffmpeg API. You can depend on one of these project.
Newest versions of libav/ffmpeg are recommended.