The LEADTOOLS Elementary Stream Source and Writer Filters allow developers to create applications that use multiple physical machines to transcode a single file, reducing the total conversion time. The process of splitting the source file into multiple pieces, transcoding each of those pieces on a separate machine, and merging those transcoded files back into a single file is done seamlessly without any gaps at the split points or loss of audio/video synchronization.
These filters are included as part of the LEADTOOLS Multimedia Suite.
Take the following steps to create a multi-machine transcoding application:
Creating the split files
Transcoding each split file
In a typical scenario, each split file would be copied to a separate machine and the file would be transcoded as described below:
Merging the split files
Once all split files have been transcoded, you will be ready to merge all the individual clips back together. The source path of all transcoded clips (audio and video) should match the paths of the corresponding clips in the original catalog file:
LTESC Format
The LTESC format (LEADTOOLS Elementary Stream Catalog) is used as an index file and contains XML which represents all information necessary to merge all split files back together. Below is an example of a LTESC file.
<?xml version="1.0" encoding="utf-8" ?>
<ltesCatalog> <stream id="stream 1" type="{73646976-0000-0010-8000-00AA00389B71}" > <clip src="test-1-c1.ltes" start="0" duration="100100001" /> <clip src="test-1-c2.ltes" start="0" duration="100100111" /> <clip src="test-1-c3.ltes" start="0" duration="100100111" /> <clip src="test-1-c4.ltes" start="0" duration="100100111" /> <clip src="test-1-c5.ltes" start="0" duration="20020000" /> </stream> <stream id="stream 2" type="{73647561-0000-0010-8000-00AA00389B71}" > <clip src="test-2.ltes" start="0" duration="419635001" /> </stream> </ltesCatalog>
Stream - This represents a stream in the catalog file. Since audio streams usually convert very quickly, the audio stream is never split. Only the video stream is split.
Type - Represents the Guid of the stream major type. In most cases, this is audio or video but other stream types are supported as well. As stated above, only video streams will be split.
Clip - Each stream contains a collection of clips. These are the individual files which were split from the source file, transcoded, then merged back together.
Src - The file path for the corresponding clip.
Start - The start time for the corresponding clip.
Duration - The length of the corresponding clip.
When merging the split files back together, it is important that the path to all transcoded split files is updated in the catalog file. You can either update the catalog file directly, or create a separate catalog file which is a copy of the original, but with updated file paths.
The transcoding process for the video stream is the most CPU intensive part of transcoding and it is responsible for the majority of the transcode time. The transcoding process for an audio stream is much faster and less CPU intensive. As a result, the LTES writer only splits the video stream. Any other stream (like the audio), can still be transcoded, but the entire stream will be transcoded at once.
Known issues
The Microsoft MPEG4 decoder will occasionally drop the last frame of a conversion. Synchronization will not be lost in the merged video, but the last frame of each split file will be lost. To resolve this issue, we recommend you use the LEAD MPEG4 Decoder. You can do this by either increasing the merit of the LEAD Decoder, or setting the SetPreferredFilter Property to the LEAD MPEG4 Decoder.
LEADTOOLS Elementary Stream SourceLEAD Elementary Stream Writer