AvTranscoder 0.9.4 C++APIforLibav/FFmpeg |
An High Level API to transform medias.
Based on FFMpeg / libav projects.
The library is here to provide a simple managment of the Transform process.
Main features attending are:
The library provide theTranscoder class, which was the highest level of managment.
This classe manage progress of process for eachStreamTranscoder.
EachStreamTranscoder definition can be added to theTranscoder.
After declaration, the process() method can process file, which call processFrame() in loop.
TheStreamTranscoder will be here to abstract call for different case as:
EachStreamTranscoder is able to process a frame, and in background process a rewrap or the transcode process.
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 theInputStream which was the coded stream.
The equivalent to theInputFile is theOutputFile. Each output stream require a decalaration, needed to wrote headers of files (wrote during the beginWrap() call).
As theInputFile provide theInputStream to describe stream, theOutputFile as hisOutputStream to put coded stream into the output file.
Using oneInputStream and oneOutputStream, eachDataStream can be passed to provide a rewrap process.
TheInputEssence 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 theStreamTranscoder class.
As theInputEssence can decode the stream, theOutputEssence will encode our images to provide the coded stream.
It's the encoder cofigured with someProfile.
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.
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.