的铅基本流源而且作家过滤器允许开发人员创建使用多台物理机器对单个文件进行代码转换的应用程序,从而减少总转换时间。将源文件分割成多个片段,在单独的机器上对每个片段进行代码转换,并将这些转换后的文件合并回单个文件的过程无缝地完成,在分割点上没有任何间隙,也没有音频/视频同步的损失。
这些筛选器包括在LEADTOOLS多188宝金博怎么下载媒体套件.
执行以下步骤创建一个多机转码应用程序:
创建拆分文件
创建转换控件以将源文件分割为更小的文件。这些文件将在不同的机器上进行转码。
指定IltmmConvert: get_SourceFile为了转换。
指定IltmmConvert: put_TargetFormat的转换控件ltmmConvert_TargetFormat_LTES格式。
类的实例首席初级流写手使用IltmmConvert: GetSubObject方法,并设置以下属性:
ILTESWriter。VideoClipMethod-这告诉写入器是将源文件分割成固定数量的文件,还是按指定的间隔分割。
ILTESWriter。VideoClipDuration—如果将源文件拆分为可变数量的输出文件,则指定每个拆分文件的间隔时间。
ILTESWriter。VideoClipCount—如果将源文件拆分为固定数量的输出文件,请将其设置为写入器应该创建的拆分文件的数量。
ILTESWriter。TargtFormat—将此设置为拆分文件合并时使用的最终格式。
设置IltmmConvert: put_TargetFile<文件名> .ltesc。通过指定LTESC作为扩展名,您可以告诉编写人员拆分源代码,并创建一个目录文件(下面将对此进行解释)。
开始转换。完成后,您应该有几个分割文件(由Writer Filter中的设置决定)和一个目录文件。
对每个分割文件进行代码转换
在一个典型的场景中,每个分割文件将被复制到一个单独的机器上,文件将按如下所述进行转码:
创建转换控件以对指定的分割文件进行代码转换。
指定IltmmConvert: get_SourceFile为了转换。在本例中,它将是相应的拆分文件。
将所需的视频压缩器添加到转换控件中。每个分割文件必须使用相同的压缩器。
指定IltmmConvert: put_TargetFormat转换控件为ltmmConvert_TargetFormat_LTES格式。
类的实例首席初级流写手使用IltmmConvert: GetSubObject方法,并设置VideoClipMethod为eLTESWriter_ClipMethod_None.原始文件已经被分割,所以我们不需要再次分割它。这里我们只执行正常的(1:1)转换。
设置IltmmConvert: put_TargetFile<文件名>中的。通过指定LTES作为扩展名,您是在告诉编写器创建单个输出文件(不要分割源文件)。
开始转换。当每台机器上的转换完成后,您就可以将所有单独的剪辑合并在一起了。
对于音频流也应该重复上述过程。看到流类型注释,以了解更多信息。
合并拆分文件
一旦所有分割文件都被转码,您就可以按照下面所述将所有单独的剪辑合并在一起了。所有转码剪辑(音频和视频)的源路径应与原始目录文件中相应剪辑的路径匹配:
创建一个转换控件来合并各个分割文件。
指定IltmmConvert: get_SourceFile为了转换。在本例中,它将是目录文件。当使用编目文件作为转换源时,输出将是编目文件中所有剪辑的合并输出。
指定IltmmConvert: put_TargetFormat的转换控件到所需的输出。这应该匹配之前在写入器筛选器中设置的TargetFormat。
设置IltmmConvert: put_TargetFile到所需的输出文件名。
开始转换。转换完成后,结果将是使用多台机器压缩的单个文件。
对于音频流也应该重复上述过程。看到关于流类型的说明下面是更多信息。
LTESC格式
LTESC格式(LEADTOOLS基本流目录)用作索引文件,包含XML, XML表示将所有分割文件合并到一起所需的所有信息。下面是一个lesc文件的示例。
<?xml version =“1.0”编码=“utf - 8”? >
< ltesCatalog >
<流id =“流1”类型=”{73646976 - 0000 - 0010 - 8000 - 00 - aa00389b71}”>
<剪辑src =“test-1-c1.ltes”开始=“0”时间=“100100001”/>
<剪辑src =“test-1-c2.ltes”开始=“0”时间=“100100111”/>
<剪辑src =“test-1-c3.ltes”开始=“0”时间=“100100111”/>
<剪辑src =“test-1-c4.ltes”开始=“0”时间=“100100111”/>
<剪辑src =“test-1-c5.ltes”开始=“0”时间=“20020000”/>
> < /流
<流id =“流2”类型=”{73647561 - 0000 - 0010 - 8000 - 00 - aa00389b71}”>
<剪辑src =“测试- 2. - lte”开始=“0”时间=“419635001”/>
> < /流
< / ltesCatalog >
流——表示目录文件中的流。因为音频流通常转换得非常快,所以音频流永远不会被分割。只有视频流被分割。
类型-表示流主类型的GUID。在大多数情况下,这是音频或视频,但也支持其他流类型。如上所述,只有视频流将被分割。
剪辑——每个流都包含剪辑的集合。这些是从源文件中分离出来的单独文件,经过转码,然后合并到一起。
Src -对应剪辑的文件路径。
Start -对应剪辑的开始时间。
Duration -对应剪辑的长度。
关于流类型的说明
在合并拆分文件时,重要的是要在编目文件中更新所有转码拆分文件的路径。您可以直接更新目录文件,也可以创建一个单独的目录文件,该文件是原始目录文件的副本,但具有更新后的文件路径。
视频流的转码过程是转码过程中CPU最密集的部分,占转码时间的大部分。转码音频流更快,CPU消耗更少。因此,LTES写入器只分割视频流。任何其他流(如音频)仍然可以被转码,但整个流将一次被转码。
已知的问题
微软MPEG4解码器偶尔会丢弃转换的最后一帧。同步不会在合并的视频中丢失,但每个分割文件的最后一帧将丢失。要解决此问题,我们建议您使用铅MPEG-4解码器.可以通过增加LEAD解码器的性能或设置SetPreferredFilterLEAD MPEG4解码器的功能。