分布式转码

LEADTOOLS基本流源而且作家过滤器允许开发人员创建使用多台物理机器对单个文件进行代码转换的应用程序,从而减少总转换时间。将源文件分割成多个片段,在单独的机器上对每个片段进行代码转换,并将这些转换后的文件合并回单个文件的过程无缝地完成,在分割点上没有任何间隙,也没有音频/视频同步的损失。

的一部分包含了过滤器LEADTOOLS多188宝金博怎么下载媒体套件

执行以下步骤创建多机转码应用程序:

创建拆分文件

  1. 创建转换控件以将源文件分割为更小的文件。这些文件将在不同的机器上进行转码。
  2. 指定ConvertCtrl。源文件为了转换。
  3. 指定TargetFormat的转换控件lte格式。
  4. 类的实例首席初级流写手使用ConvertCtrl。GetSubObject方法,并设置以下属性:

    • VideoClipMethod-这将告诉Writer是将源文件分割为固定数量的文件,还是根据每个文件的指定持续时间来计算输出文件的数量。
    • VideoClipDuration—如果将源文件拆分为可变数量的输出文件,则设置为每个拆分文件所需的持续时间。
    • VideoClipCount—如果将源文件拆分为固定数量的输出文件,请将其设置为写入器应该创建的拆分文件的数量。
    • TargetFormat—将此设置为拆分文件合并时使用的最终格式。
  5. 设置TargetFile .ltesc。通过指定LTESC作为扩展名,您可以告诉编写人员拆分源代码,并创建一个目录文件(下面将对此进行解释)。
  6. 开始转换。完成后,您应该有几个分割文件(由Writer Filter中的设置决定)和一个目录文件。

    代码转换:创建分割文件

对每个分割文件进行代码转换

在一个典型的场景中,每个分割文件将被复制到一个单独的机器上,文件将按如下所述进行转码:

  1. 创建转换控件以对指定的分割文件进行代码转换。
  2. 指定ConvertCtrl。源文件为了转换。在本例中,它将是相应的拆分文件。
  3. 将所需的视频压缩器添加到转换控件中。每个分割文件必须使用相同的压缩器。
  4. 指定TargetFormat的转换控件lte
  5. 类的实例首席初级流写手使用ConvertCtrl。GetSubObject方法,并设置VideoClipMethodeLTESWriter_ClipMethod_None.由于原文件已被分割,无需再次分割。这里我们只执行正常的(1:1)转换。
  6. 设置TargetFile 使。指定LTES作为扩展名,告诉写入器创建单个输出文件(不要分割源文件)。
  7. 开始转换。当每台机器上的转换完成后,您就可以将所有单独的剪辑合并在一起了。

对于音频流也应该重复上述过程。看到关于流类型的说明下面是更多信息。

代码转换:拆分源文件

合并拆分文件

一旦所有分割文件都被转码,您就可以将所有单独的剪辑合并在一起了。所有转码剪辑(音频和视频)的源路径应与原始目录文件中相应剪辑的路径匹配:

  1. 创建转换控件以对指定的分割文件进行代码转换。
  2. 指定ConvertCtrl。源文件为了转换。在本例中,它将是目录文件。当使用编目文件作为转换源时,输出将是编目文件中所有剪辑的合并输出。
  3. 指定TargetFormat的转换控件到所需的输出。这应该匹配之前在写入器筛选器中设置的TargetFormat。
  4. 设置TargetFile到所需的输出文件名。
  5. 开始转换。当每台机器上的转换完成后,结果将是使用多台机器压缩的单个文件。

对于音频流也应该重复上述过程。看到关于流类型的说明下面是更多信息。

代码转换:合并分割文件

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—对应剪辑的文件路径。

开始—对应剪辑的开始时间。

持续时间-对应的剪辑长度。

关于流类型的说明

在合并拆分文件时,重要的是要在编目文件中更新所有转码拆分文件的路径。您可以直接更新目录文件,也可以创建一个单独的目录文件,该文件是原始目录文件的副本,但具有更新后的文件路径。

视频流的转码过程是转码过程中cpu最密集的部分,它负责大部分的转码时间。音频流的转码过程要快得多,CPU消耗也更少。因此,LTES写入器只分割视频流。任何其他流(如音频)仍然可以转码,但整个流将立即转码。

已知的问题

微软MPEG4解码器偶尔会丢弃转换的最后一帧。合并后的视频不会丢失同步,但每个分割文件的最后一帧会丢失。要解决此问题,建议使用导MPEG4解码器.您可以通过增加LEAD解码器的优点,或将SetPreferredFilter属性设置为LEAD MPEG4解码器来实现这一点。

另请参阅

LEADTOOLS基本流源首席初级流写手

LEADTOOLS多188宝金博怎么下载媒体
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。