视频转码系统和方法

文档序号:7769861阅读:163来源:国知局
视频转码系统和方法
【专利摘要】本发明提供了一种视频转码系统,包括调度模块、切片模块、转码模块和合片模块;其中,所述调度模块用于生成视频源文件的切片任务;所述切片模块用于执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件;所述调度模块还用于生成对应每个所述视频子文件的转码子任务;所述转码模块用于执行所述转码子任务对每个所述视频子文件进行转码,获得对应的多个转码子文件;所述调度模块还用于生成对应所述转码子文件的合片任务;所述合片模块,用于执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件。本发明提供的视频转码系统可并行处理多个转码子任务,大大提高了视频转码的效率。本发明还提供了一种视频转码方法。
【专利说明】视频转码系统和方法
【技术领域】
[0001]本发明涉及图像处理【技术领域】,特别是涉及一种视频转码系统和方法。
【背景技术】
[0002]目前针对应用领域的不同、用户的需求不同以及使用的播放终端不同等各种原因,需要对视频源文件进行转码以得到符合需求的视频文件。比如交通、安防、监控以及影视等领域,对视频质量要求较高,需要视频具有较高分辨率及码率;而移动设备由于存储空间有限,一般需要将视频源文件转码为分辨率较低的视频文件,以减小视频所占的存储空间,且易于传输。
[0003]发明人发现传统的转码方法中,对于一个视频源文件的视频转码任务,只能使用转码模块对应的一个可用资源进行转码,转码效率低,而且视频源文件越大,转码效率低的情况更明显。

【发明内容】

[0004]基于此,有必要针对传统的视频转码方法转码效率低的问题,提供一种视频转码系统和方法。
[0005]一种视频转码系统,所述系统包括调度模块、切片模块、转码模块和合片模块;其中,
[0006]所述调度模块用于生成视频源文件的切片任务;
[0007]所述切片模块用于执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件;
[0008]所述调度模块还用于生成对应每个所述视频子文件的转码子任务;
[0009]所述转码模块用于执行所述转码子任务对每个所述视频子文件进行转码,获得对应的多个转码子文件;
[0010]所述调度模块还用于生成对应所述转码子文件的合片任务;
[0011]所述合片模块,用于执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件。
[0012]一种视频转码方法,所述方法包括:
[0013]生成视频源文件的切片任务;
[0014]执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件;
[0015]生成对应每个所述视频子文件的转码子任务;
[0016]执行所述转码子任务对每个所述视频子文件进行转码,获得对应的多个转码子文件;
[0017]生成对应所述转码子文件的合片任务;
[0018]执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件。
[0019]上述视频转码系统和方法,切片模块执行切片任务对视频源文件进行切片获得多个视频子文件,转码模块执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件,合片模块执行合片任务将多个转码子文件合并,获得合并后的转码视频文件。相对于转码子任务,切片任务和合片任务所用时间很少,对整个视频转码过程的效率影响很小。将原来对应一个视频源文件的一个大的视频转码任务,转化为多个小的转码子任务,可通过多个转码模块和/或转码模块对应的多个可用资源并行处理多个小的转码子任务,大大提高了视频转码的效率。
【专利附图】

【附图说明】
[0020]图1为一个实施例中视频转码系统的结构框图;
[0021]图2为图1中一个实施例的调度模块的结构框图;
[0022]图3为图1中另一个实施例的调度模块的结构框图;
[0023]图4为一个实施例中为切片任务分配可用资源的示意图;
[0024]图5为一个实施例中切片任务和合片任务共用资源集的示意图;
[0025]图6为一个实施例中视频转码方法的流程示意图。
【具体实施方式】
[0026]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027]如图1所示,在一个实施例中,提供了一种视频转码系统,该系统包括调度模块102、切片模块104、转码模块106和合片模块108。
[0028]其中,调度模块102用于生成视频源文件的切片任务。
[0029]调度模块102接收到对视频源文件进行转码的视频转码任务后,生成视频源文件的切片任务,该切片任务用于将视频源文件切割成多个视频子文件。一个视频源文件对应一个切片任务,当有多个视频源文件即有多个视频转码任务时,将生成对应的多个切片任务。
[0030]切片模块104用于执行切片任务对视频源文件进行切片,获得多个视频子文件。
[0031]调度模块102将生成的切片任务发送给切片模块104,切片模块104可以是一个或多个,可根据需要配置。切片模块104调用可用资源执行切片任务从而对视频源文件进行切片,获得多个视频子文件。切片模块104完成切片任务后向调度模块102返回切片完成的反馈,从而便于调度模块102继续进行后续处理。
[0032]调度模块102还用于生成对应每个视频子文件的转码子任务。
[0033]切片完成获得视频子文件后,调度模块102生成对应每个视频子文件的转码子任务,转码子任务用于将对应的视频子文件转码成为转码子文件。
[0034]当视频源文件对应的视频转码任务对应输出一路转码视频文件,即输出一种转码规格信息对应的转码视频文件时,一个视频子文件对应一个转码子任务;若对应输出多路视频文件,即输出多种转码规格信息对应的转码视频文件时,一个视频子文件对应多个转码子任务,且一个视频子文件对应的转码子任务的数量与转码规格信息的种类数相同。
[0035]其中,转码规格信息为转码后获得的转码视频文件的视频参数,包括但不限于帧率、码率、分辨率和编码格式等中的至少一种。对于一个视频子文件对应的转码子任务,不同的转码规格信息分别对应不同的转码子任务,转码后获得与转码规格信息对应的转码子文件。比如,若视频子文件数为M,转码规格信息的种类数为O,则生成的转码子任务数为M*0个,需要M*0个可用资源执行转码子任务,从而获得分别对应不同转码规格信息的M*0个转码子文件。
[0036]转码模块106用于执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件。
[0037]调度模块102生成对应每个视频子文件的转码子任务后,将生成的转码子任务发送给转码模块106。转码模块106可以是一个或多个,可根据需要配置。转码模块106调用可用资源执行转码子任务从而将视频子文件进行转码,获得对应的多个转码子文件。转码模块106完成转码子任务后向调度模块102返回转码完成的反馈,从而便于调度模块102继续进行后续处理。
[0038]调度模块102还用于生成对应转码子文件的合片任务。
[0039]将视频子文件转码成为转码子文件后,调度模块102生成对应转码子文件的合片任务,合片任务用于将对应的转码子文件合并为转码视频文件。
[0040]合片模块108用于执行合片任务将多个转码子文件合并,获得合并后的转码视频文件。
[0041]合片模块108可以是一个或多个,可根据需要配置。合片模块108接收到调度模块102生成的合片任务后,执行该合片任务从而将多个转码子文件合并,获得合并后的转码视频文件。合片模块108完成合片任务后向调度模块102返回合片完成的反馈,从而便于调度模块102继续进行后续处理。
[0042]在一个实施例中,视频源文件、视频子文件以及转码子文件存储于公共存储中,需要时凭视频源文件、视频子文件或转码子文件的存储地址进行读取写入操作。可避免大量数据的传输带来的传输资源和时间的损耗,提高视频转码效率。
[0043]通过对切片模块104、转码模块106和合片模块108进行静态压力测试表明,在不执行任务时,单个切片模块104、转码模块106或合片模块108对应的可用资源数与该切片模块104、转码模块106或合片模块108对应的终端的CPU核数一致。
[0044]上述视频转码系统,切片模块执行切片任务对视频源文件进行切片获得多个视频子文件,转码模块执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件,合片模块执行合片任务将多个转码子文件合并,获得合并后的转码视频文件。相对于转码子任务,切片任务和合片任务所用时间很少,对整个视频转码过程的效率影响很小。将原来对应一个视频源文件的一个大的视频转码任务,转化为多个小的转码子任务,可通过多个转码模块和/或转码模块对应的多个可用资源并行处理多个小的转码子任务,大大提高了视频转码的效率。
[0045]在一个实施例中,调度模块102还用于在相同转码规格信息对应的转码子任务完成后,生成相同转码规格信息对应的转码子文件所对应的合片任务。
[0046]合片模块108还用于执行相同转码规格信息对应的合片任务,将相同转码规格信息对应的多个转码子文件合并,获得合并后的与相同转码规格信息对应的转码视频文件。
[0047]本实施例中,当需要输出多种转码规格信息对应的转码视频文件时,调度模块102在相同转码规格信息对应的转码子任务全部完成后,即可生成该相同转码规格信息对应的转码子文件所对应的合片任务。合片模块108执行该相同转码规格信息对应的合片任务,从而将相同转码规格信息对应的多个转码子文件合并,获得合并后的与相同转码规格信息对应的转码视频文件。
[0048]本实施例中,无需等待全部转码子任务完成,即可将一种转码规格信息对应的转码子文件进行合片处理,获得对应的转码视频转码文件,提高了视频转码的效率。
[0049]如图2所示,在一个实施例中,调度模块102包括计算模块102a,用于根据预设的切片阈值和/或转码模块对应的资源总数计算预计视频子文件数;资源预分配模块102b,用于根据预计视频子文件数为转码预分配可用资源数量,预分配的可用资源对应转码模块106 ;资源预分配更新模块102c,用于获取视频子文件数,根据视频子文件数更新预分配的可用资源数量。
[0050]本实施例中,预设的切片阈值可以是预设的单个视频子文件的大小或者切片数。若预设的切片阈值为单个视频子文件的大小100MB (兆字节),视频源文件大小为900MB,则预计视频子文件数为900/100=9 ;若预设的切片阈值为切片数9,则预计视频子文件数为9。可在切片模块104执行切片任务前,即为转码预分配转码模块106对应的可用资源,使转码模块106有足够的准备时间,当转码模块106执行转码子任务时,有充足的可用资源执行转码子任务,提高视频转码的效率。
[0051]资源预分配模块102b用于在切片前,根据预计视频子文件数为转码预分配可用资源数量,预分配的可用资源对应转码模块106。若只有一路输出时,这里预分配的可用资源数量等于预计视频子文件数;若有多路输出,则预分配的可用资源数量等于预计视频子文件数与转码规格信息种类数的乘积。需要说明的是,由于此时还未切片,更未生成对应的转码子任务,因此预分配的可用资源数量是一个总量,并不对应每个转码子任务。
[0052]资源预分配更新模块102c,用于在切片后,获取视频子文件数,根据视频子文件数更新预分配的可用资源。由于实际的视频子文件数(视频子文件数就是实际的视频子文件数)与预计视频子文件数不一定相同,因此切片任务完成后,需要根据视频子文件数更新预分配的可用资源的数量,避免预分配过多资源浪费资源。
[0053]在一个实施例中,计算模块102a用于根据预设的切片阈值和转码模块106对应的资源总数计算预计视频子文件数。本实施例中,预设的切片阈值是预设的单个视频子文件的大小。具体地,计算模块102a用于先使用视频源文件的文件大小除以转码模块106对应的资源总数获得中间值,若该中间值大于切片阈值,则预计视频子文件数等于转码模块106对应的资源总数;反之,若中间值不大于切片阈值,则预计视频子文件数等于视频源文件的文件大小除以切片阈值的值。这里的转码模块106对应的资源总数,是指所有转码模块106对应的资源(包括已用和可用资源)的总数,比如若有4个转码模块106,每个转码模块106对应4个可用资源,则转码模块106对应的资源总数为16。
[0054]本实施例中,根据预设的切片阈值和转码模块106对应的资源总数计算预计视频子文件数,可以保证预计视频子文件数总是大于等于实际的视频子文件数,从而可以保证为转码预分配的资源足够用。切片任务完成后,资源预分配更新模块102c获取视频子文件数,根据视频子文件数更新预分配的可用资源,将不会使用的可用资源释放出来,避免资源的浪费。[0055]需要说明的是,计算获得的预计视频子文件数与实际的视频子文件数可能有差距。因此,调度模块102还用于从切片模块104获取视频子文件数,根据获取的视频子文件数调整预分配的转码模块106对应的可用资源。通过获取实际的视频子文件数调整预分配的可用资源,可避免可用资源的浪费。
[0056]在一个实施例中,调度模块102还用于获取转码子任务对应的转码规格信息,根据获取的转码规格信息估算转码子任务对应的转码耗时;按照转码耗时从高到低的顺序为对应的转码子任务分配转码模块106对应的可用资源。
[0057]转码规格信息的不同,会导致转码子任务对应的转码耗时有较大差别,比如帧率、码率、分辨率等视频参数与转码耗时正相关,帧率大、码率高或者分辨率大,对应的转码子任务的转码耗时也多。
[0058]本实施例中,按照转码耗时从高到低的顺序为对应的转码子任务分配转码模块106对应的可用资源,优先为转码耗时多的转码子任务分配可用资源,可保证耗时多的转码子任务先执行,总体上所有转码子任务完成的时间相差不大,相对于不按照转码耗时排序发送转码子任务,节省了时间,提高了转码效率。
[0059]如图3所示,在一个实施例中,调度模块102包括切片任务调度模块102d,用于获取切片模块104对应的可用资源数,根据切片模块104对应的可用资源数向对应的切片模块104调度切片任务。
[0060]切片模块104对应的一个可用资源,只能执行一个切片任务,执行切片任务时该资源为已用资源,执行完该切片任务后释放该资源,该资源再次成为可用资源。
[0061]本实施例中,将多个视频源文件进行切片处理,获取切片模块104对应的可用资源数,可根据获取的切片模块104对应的可用资源数合理的调度切片任务。比如,可向每个切片模块104发送与该切片模块104对应的可用资源数一致的切片任务。具体地,若一个切片模块104对应2个可用资源,可先向该切片模块104分配2个切片任务。根据切片模块104的可用资源数发送切片任务,可保证各个切片模块104具备足够的可用资源执行切片任务,可提闻切片的效率,进而提闻整个视频转码的效率。
[0062]在一个实施例中,切片任务调度模块102d还用于获取切片模块104对应的可用资源数;向对应最多可用资源数的切片模块104调度一个切片任务,继续获取切片模块104对应的可用资源数,直至调度完所有切片任务。
[0063]具体地,当不存在可用资源时暂停发送切片任务,直到存在可用资源时继续发送切片任务。当多个切片模块104对应的可用资源数相同时,可按照预定顺序或随机选择切片模块104分配切片任务。
[0064]在一个实施例中,切片任务调度模块102d还用于在继续获取切片模块104对应的可用资源数之前,获取转码模块106对应的可用资源数,判断当前获取的转码模块106对应的可用资源数是否大于已调度的切片任务对应的预分配的可用资源数量,若是则执行继续获取切片模块104对应的可用资源数,直至调度完所有切片任务。
[0065]本实施例中,已调度的切片任务对应的转码子任务调度给转码模块106后,该切片任务对应的预分配的可用资源数量会相应地减少。具体地,该切片任务对应的一个转码子任务调度给转码模块106后,该切片任务对应的预分配的可用资源数量会减I。若当前获取的转码模块106对应的可用资源数大于已调度的切片任务对应的预分配的可用资源数量,说明已调度的切片任务切片完成后,生成对应的转码子任务,转码模块106具有足够数量的可用资源来执行对应的转码子任务,此时可以继续调度切片任务。相反,若当前获取的转码模块106对应的可用资源数不大于已调度的切片任务对应的预分配的可用资源数量,说明已调度的切片任务完成后,转码模块106尚未有或者刚好具有足够的可用资源执行对应的转码子任务,此时可暂停调度切片任务,待获取的转码模块106对应的可用资源数大于已调度的切片任务对应的预分配的可用资源数量时,再执行继续获取切片模块104对应的可用资源数,直至调度完所有切片任务。避免切片任务及后续对应的转码子任务堆积,不能及时执行,占用过多的存储及运行资源,节省了存储资源和运行资源。
[0066]举例说明,如图4所示,在图2左图中,切片模块1-4对应的已用资源数分别为2、
3、3和2,对应的可用资源数分别为2、1、I和2,可见此时切片模块I和切片模块4对应的可用资源数最多,可优先向切片模块I或切片模块4分配切片任务。若先向切片模块I调度一个切片任务,如图2中右图所示,切片模块1-4对应的可用资源数分别为1、1、I和2,可再向切片模块4调度一个切片任务。依此类推,直至调度完所有切片任务。
[0067]本实施例中,逐个向当前对应最多可用资源数的切片模块104发送切片任务并执行,可保证各个切片模块104执行的切片任务数大致平衡,避免切片任务分配不均而造成资源的浪费。
[0068]参考图3,调度模块102还包括转码子任务调度模块102e,用于获取转码模块106对应的可用资源数,根据转码模块106对应的可用资源数向对应的转码模块106调度转码子任务。
[0069]转码模块106对应的一个可用资源,只能执行一个转码子任务,执行转码子任务时该资源为已用资源,执行完该转码子任务后释放该资源,该资源再次成为可用资源。
[0070]本实施例中,获取转码模块106对应的可用资源数,可根据获取的转码模块106对应的可用资源数合理的调度转码子任务。比如,可向每个转码模块106发送与该转码模块106对应的可用资源数一致的转码子任务。根据转码模块106的可用资源数发送转码子任务,可保证各个转码模块106具备足够的可用资源执行转码子任务,可提高对视频子文件进行转码的效率,进而提高整个视频转码的效率。
[0071 ] 在一个实施例中,转码子任务调度模块102e还用于获取转码模块106对应的可用资源数;向对应最多可用资源数的转码模块106调度一个转码子任务,继续获取转码模块106对应的可用资源数,直至调度完所有转码子任务。
[0072]具体地,当不存在可用资源时暂停发送转码子任务,直到存在可用资源时继续发送转码子任务。当多个转码模块106对应的可用资源数相同时,可按照预定顺序或随机选择转码模块106分配转码子任务。
[0073]本实施例中,逐个向当前对应最多可用资源数的转码模块106发送转码子任务并执行,可保证各个转码模块106执行的转码子任务数大致平衡,避免转码子任务分配不均而造成资源的浪费。
[0074]参考图3,调度模块102还包括合片任务调度模块102f,用于获取合片模块108对应的可用资源数,根据合片模块108对应的可用资源数向对应的合片模块108调度合片任务。
[0075]合片模块108对应的一个可用资源,只能执行一个合片任务,执行合片任务时该资源为已用资源,执行完该合片任务后释放该资源,该资源再次成为可用资源。
[0076]本实施例中,获取合片模块108对应的可用资源数,可根据获取的合片模块108对应的可用资源数合理的调度合片任务。比如,可向每个合片模块108发送与该合片模块108对应的可用资源数一致的合片任务。根据合片模块108的可用资源数发送合片任务,可保证各个合片模块108具备足够的可用资源执行合片任务,可提高对视频子文件进行转码的效率,进而提闻整个视频转码的效率。
[0077]在一个实施例中,合片任务调度模块102e还用于获取合片模块108对应的可用资源数;向对应最多可用资源数的合片模块108调度一个合片任务,继续获取合片模块108对应的可用资源数,直至调度完所有合片任务。
[0078]具体地,当不存在可用资源时暂停发送合片任务,直到存在可用资源时继续发送合片任务。当多个合片模块108对应的可用资源数相同时,可按照预定顺序或随机选择合片模块108分配合片任务。
[0079]本实施例中,逐个向当前对应最多可用资源数的合片模块108发送合片任务并执行,可保证各个合片模块108执行的合片任务数大致平衡,避免合片任务分配不均而造成资源的浪费。
[0080]在一个实施例中,该视频转码方法还包括:调度模块102定时向切片模块104、转码模块106和合片模块108查询任务完成进度;当接收到停止目标视频源文件的视频转码任务的指令后,根据查询获得的任务完成进度向正在执行与目标视频源文件相关的任务的模块发送停止命令。这里的模块指切片模块104、转码模块106和合片模块108中的至少一种。其中视频转码任务是指根据目标视频源文件生成视频转码文件的过程中的任务。
[0081]本实施例中,定时向切片模块104、转码模块106和合片模块108查询任务完成进度,可获知任务进展情况,当接收到停止视频转码任务的指令后,根据查询获得的任务完成进度向正在执行与目标视频源文件相关的任务的模块发送停止命令,便可停止视频转码任务,可方便地控制整个视频转码任务进程。
[0082]在一个实施例中,切片任务与合片任务可共用资源集。其中共用资源集指既可用来执行切片任务,又可用来执行合片任务的资源的集合,但同一时间同一资源仍只能执行一个任务。
[0083]举例说明,参考图5,切片模块I和合片模块I对应共用资源集1,切片模块2和合片模块2对应共用资源集2,切片模块3和合片模块3对应共用资源集3,切片模块4和合片模块4对应共用资源集4。参考图5中左图,共用资源集I正在执行一个切片任务和一个合片任务,共用资源集2正在执行2个合片任务和一个切片任务,共用资源集3正在执行2个切片任务和I个合片任务,共用资源集4正在执行2个切片任务,因此,共用资源集1-4的可用资源数分别为2、1、1和2。此时,若是发送切片任务,可向切片模块I发送切片任务,参考图5中右图,共用资源集I对应的可用资源数变为I。若再发送合片任务,则可向合片模块4发送合片任务,共用资源集4的可用资源数变为I。本实施例中,切片任务与合片任务可共用资源集,节省了资源。
[0084]如图6所示,在一个实施例中,提供了一种视频转码方法,包括:
[0085]步骤602,生成视频源文件的切片任务。
[0086]调度模块接收到对视频源文件进行转码的视频转码任务后,生成视频源文件的切片任务,该切片任务用于将视频源文件切割成多个视频子文件。一个视频源文件对应一个切片任务,当有多个视频源文件即有多个视频转码任务时,将生成对应的多个切片任务。
[0087]步骤604,执行切片任务对视频源文件进行切片,获得多个视频子文件。
[0088]调度模块将生成的切片任务发送给切片模块,切片模块调用可用资源执行切片任务从而对视频源文件进行切片,获得多个视频子文件。
[0089]步骤606,生成对应每个视频子文件的转码子任务。
[0090]切片完成获得视频子文件后,调度模块生成对应每个视频子文件的转码子任务,转码子任务用于将对应的视频子文件转码成为转码子文件。
[0091]当视频源文件对应的视频转码任务对应输出一路转码视频文件,即输出一种转码规格信息对应的转码视频文件时,一个视频子文件对应一个转码子任务;若对应输出多路视频文件,即输出多种转码规格信息对应的转码视频文件时,一个视频子文件对应多个转码子任务,且一个视频子文件对应的转码子任务的数量与转码规格信息的种类数相同。
[0092]其中,转码规格信息为转码后获得的转码视频文件的视频参数,包括但不限于帧率、码率、分辨率和编码格式等中的至少一种。对于一个视频子文件对应的转码子任务,不同的转码规格信息分别对应不同的转码子任务,转码后获得与转码规格信息对应的转码子文件。
[0093]步骤608,执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件。
[0094]调度模块生成对应每个视频子文件的转码子任务后,将生成的转码子任务发送给转码模块。转码模块调用可用资源执行转码子任务从而将视频子文件进行转码,获得对应的多个转码子文件。
[0095]步骤610,生成对应转码子文件的合片任务。
[0096]将视频子文件转码成为转码子文件后,调度模块生成对应转码子文件的合片任务,合片任务用于将对应的转码子文件合并为转码视频文件。
[0097]步骤612,执行合片任务将多个转码子文件合并,获得合并后的转码视频文件。
[0098]合片模块接收到调度模块生成的合片任务后,执行该合片任务从而将多个转码子文件合并,获得合并后的转码视频文件。
[0099]在一个实施例中,视频源文件、视频子文件以及转码子文件存储于公共存储中,需要时凭视频源文件、视频子文件或转码子文件的存储地址进行读取写入操作。可避免大量数据的传输带来的传输资源和时间的损耗,提高视频转码效率。
[0100]上述视频转码方法,执行切片任务对视频源文件进行切片获得多个视频子文件,执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件,执行合片任务将多个转码子文件合并,获得合并后的转码视频文件。相对于转码子任务,切片任务和合片任务所用时间很少,对整个视频转码过程的效率影响很小。将原来对应一个视频源文件的一个大的视频转码任务,转化为多个小的转码子任务,可通过并行处理多个小的转码子任务实现视频转码,大大提高了视频转码的效率。
[0101]在一个实施例中,执行切片任务对视频源文件进行切片,获得多个视频子文件的步骤之前还包括:根据预设的切片阈值和/或用于转码的资源总数计算预计视频子文件数;根据预计视频子文件数为转码预分配用于转码的可用资源数量。执行切片任务对视频源文件进行切片,获得多个视频子文件的步骤之后还包括:获取视频子文件数,根据视频子文件数更新预分配的用于转码的可用资源数量。
[0102]本实施例中,预设的切片阈值可以是预设的单个视频子文件的大小或者切片数。可在执行切片任务前,即为转码预分配用于转码的可用资源,当执行转码子任务时,便有充足的用于转码的可用资源执行转码子任务,从而提高视频转码的效率。
[0103]根据预计视频子文件数为转码预分配用于转码的可用资源数量。若只有一路输出时,这里预分配的用于转码的可用资源数量等于预计视频子文件数;若有多路输出,则预分配的用于转码的可用资源数量等于预计视频子文件数与转码规格信息种类数的乘积。需要说明的是,由于此时还未切片,更未生成对应的转码子任务,因此预分配的可用资源数量是一个总量,并不对应每个转码子任务。
[0104]在切片完成后,获取视频子文件数,根据视频子文件数更新预分配的用于转码的可用资源数量。由于实际的视频子文件数(如无特别说明,视频子文件数就是实际的视频子文件数)与预计视频子文件数不一定相同,因此切片任务完成后,需要根据视频子文件数更新预分配的用于转码的可用资源的数量,避免预分配过多资源浪费资源。
[0105]在一个实施例中,根据预设的切片阈值和用于转码的资源总数计算预计视频子文件数。本实施例中,预设的切片阈值是预设的单个视频子文件的大小。具体地,先使用视频源文件的文件大小除以用于转码的资源总数获得中间值,若该中间值大于切片阈值,则预计视频子文件数等于用于转码的资源总数;反之,若中间值不大于切片阈值,则预计视频子文件数等于视频源文件的文件大小除以切片阈值的值。这里的用于转码的资源总数,是指所有用于转码的资源(包括已用和可用资源)的总数。
[0106]本实施例中,根据预设的切片阈值和用于转码的资源总数计算预计视频子文件数,可以保证预计视频子文件数总是大于等于实际的视频子文件数,从而可以保证为转码预分配的资源足够用。切片任务完成后,获取视频子文件数,根据视频子文件数更新预分配的可用资源,将不会使用的可用资源释放出来,避免资源的浪费。
[0107]需要说明的是,计算获得的预计视频子文件数与实际的视频子文件数可能有差距。因此,执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件的步骤之前,还包括:获取视频子文件数,根据获取的视频子文件数调整预分配的用于转码的可用资源。通过获取实际的视频子文件数调整预分配的可用资源,可避免可用资源的浪费。
[0108]在一个实施例中,生成对应转码子文件的合片任务的步骤,包括:相同转码规格信息对应的转码子任务完成后,生成相同转码规格信息对应的转码子文件所对应的合片任务。
[0109]执行合片任务将多个转码子文件合并,获得合并后的转码视频文件的步骤包括:执行相同转码规格信息对应的合片任务,将相同转码规格信息对应的多个转码子文件合并,获得合并后的与相同转码规格信息对应的转码视频文件。
[0110]本实施例中,当需要输出多种转码规格信息对应的转码视频文件时,在相同转码规格信息对应的转码子任务全部完成后,即可生成该相同转码规格信息对应的转码子文件所对应的合片任务。执行该相同转码规格信息对应的合片任务,从而将相同转码规格信息对应的多个转码子文件合并,获得合并后的与相同转码规格信息对应的转码视频文件。
[0111]本实施例中,无需等待全部转码子任务完成,即可将一种转码规格信息对应的转码子文件进行合片处理,获得对应的转码视频转码文件,提高了视频转码的效率。
[0112]在一个实施例中,生成对应每个视频子文件的转码子任务的步骤之后,还包括:获取转码子任务对应的转码规格信息,根据获取的转码规格信息估算转码子任务对应的转码耗时;按照转码耗时从高到低的顺序为对应的转码子任务分配用于转码的可用资源。
[0113]本实施例中,按照转码耗时从高到低的顺序为对应的转码子任务分配用于转码的可用资源,优先为转码耗时多的转码子任务分配可用资源,可保证耗时多的转码子任务先执行,总体上所有转码子任务完成的时间相差不大,相对于不按照转码耗时排序发送转码子任务,节省了时间,提高了转码效率。
[0114]在一个实施例中,执行切片任务对视频源文件进行切片,获得多个视频子文件的步骤之前还包括:获取用于切片的可用资源数,根据用于切片的可用资源数为切片任务分配用于切片的可用资源。
[0115]本实施例中,将多个视频源文件进行切片处理,获取用于切片的可用资源数,可根据获取的用于切片的可用资源数合理的为切片任务分配可用资源,可保证有足够的可用资源执行切片任务,可提闻切片的效率,进而提闻整个视频转码的效率。
[0116]在一个实施例中,获取用于切片的可用资源数,根据用于切片的可用资源数为切片任务分配用于切片的可用资源的步骤具体包括:获取用于切片的资源集对应的可用资源数,为一个切片任务分配对应最多可用资源数的用于切片的资源集中的一个可用资源,继续获取用于切片的资源集对应的可用资源数,直至为所有切片任务分配了可用资源。
[0117]在一个实施例中,在继续获取用于切片的资源集对应的可用资源数之前,还包括:获取用于转码的资源集对应的可用资源数,判断当前获取的用于转码的可用资源数是否大于已分配了可用资源的切片任务对应的预分配的用于转码的可用资源数量,若是则执行继续获取用于切片的资源集对应的可用资源数,直至为所有切片任务分配了可用资源的步骤。
[0118]本实施例中,已分配了可用资源的切片任务对应的转码子任务分配了用于转码的可用资源后,该切片任务对应的预分配的可用资源数量会相应地减少。具体地,该切片任务对应的一个转码子任务分配了一个用于转码的可用资源后,该切片任务对应的预分配的可用资源数量会减I。若当前获取的用于转码的可用资源数大于已调度的切片任务对应的预分配的可用资源数量,说明已调度的切片任务切片完成后,生成对应的转码子任务,具有足够数量的用于转码的可用资源来执行对应的转码子任务,此时可以继续调度切片任务。相反,若当前获取的用于转码的可用资源数不大于已调度的切片任务对应的预分配的可用资源数量,说明已调度的切片任务完成后,尚未有或者刚好具有足够的用于转码的可用资源执行对应的转码子任务,此时可暂停调度切片任务,待获取的用于转码的可用资源数大于已调度的切片任务对应的预分配的可用资源数量时,再执行继续获取用于切片的资源集对应的可用资源数,直至为所有切片任务分配了可用资源的步骤。避免切片任务及后续对应的转码子任务堆积,不能及时执行,占用过多的存储及运行资源,节省了存储资源和运行资源。
[0119]本实施例中,逐个为每个切片任务分配对应最多可用资源数的用于切片的资源集中的一个可用资源,可保证各个用于切片的资源集对应的切片任务数大致平衡,避免用于切片的可用资源分配不均而造成资源的浪费。[0120]在一个实施例中,执行转码子任务对每个视频子文件进行转码,获得对应的多个转码子文件的步骤之前还包括:获取用于转码的可用资源数,根据用于转码的可用资源数为转码子任务分配用于转码的可用资源。
[0121]本实施例中,将多个视频源文件进行转码处理,获取用于转码的可用资源数,可根据获取的用于转码的可用资源数合理的为转码子任务分配可用资源,可保证有足够的可用资源执行转码子任务,可提高将视频子文件进行转码的效率,进而提高整个视频转码的效率。
[0122]在一个实施例中,获取用于转码的可用资源数,根据用于转码的可用资源数为转码子任务分配用于转码的可用资源具体包括:获取用于转码的资源集对应的可用资源数,为一个转码子任务分配对应最多可用资源数的用于转码的资源集中的一个可用资源,继续获取用于转码的资源集对应的可用资源数,直至为所有转码子任务分配了可用资源。
[0123]本实施例中,逐个为每个转码子任务分配对应最多可用资源数的用于转码的资源集中的一个可用资源,可保证各个用于转码的资源集对应的转码子任务数大致平衡,避免用于转码的可用资源分配不均而造成资源的浪费。
[0124]在一个实施例中,执行合片任务将多个转码子文件合并,获得合并后的转码视频文件的步骤之前还包括:获取用于合片的可用资源数,根据用于合片的可用资源数为合片任务分配用于合片的可用资源。
[0125]本实施例中,将多个视频源文件进行合片处理,获取用于合片的可用资源数,可根据获取的用于合片的可用资源数合理的为合片任务分配可用资源,可保证有足够的可用资源执行合片任务,可提闻合片的效率,进而提闻整个视频转码的效率。
[0126]在一个实施例中,获取用于合片的可用资源数,根据用于合片的可用资源数为合片任务分配用于合片的可用资源具体包括:获取用于合片的资源集对应的可用资源数,为一个合片任务分配对应最多可用资源数的用于合片的资源集中的一个可用资源,继续获取用于合片的资源集对应的可用资源数,直至为所有合片任务分配了可用资源。
[0127]本实施例中,逐个为每个合片任务分配对应最多可用资源数的用于合片的资源集中的一个可用资源,可保证各个用于合片的资源集对应的合片任务数大致平衡,避免用于合片的可用资源分配不均而造成资源的浪费。
[0128]在一个实施例中,切片任务与合片任务可共用资源集。其中共用资源集指既可用来执行切片任务,又可用来执行合片任务的资源的集合,但同一时间同一资源仍只能执行一个任务。本实施例中,切片任务与合片任务可共用资源集,节省了资源。
[0129]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种视频转码系统,其特征在于,所述系统包括调度模块、切片模块、转码模块和合片模块;其中, 所述调度模块用于生成视频源文件的切片任务; 所述切片模块用于执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件; 所述调度模块还用于生成对应每个所述视频子文件的转码子任务; 所述转码模块用于执行所述转码子任务对每个所述视频子文件进行转码,获得对应的多个转码子文件; 所述调度模块还用于生成对应所述转码子文件的合片任务; 所述合片模块,用于执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件。
2.根据权利要求1所述的系统,其特征在于,所述调度模块包括: 计算模块,用于根据预设的切片阈值和/或所述转码模块对应的资源总数计算预计视频子文件数; 资源预分配模块,用于根据所述预计视频子文件数为转码预分配可用资源数量,所述预分配的可用资源对应所述转码模块; 资源预分配更新模块,用于获取所述视频子文件数,根据所述视频子文件数更新所述预分配的可用资源数量。
3.根据权利要求1所述 的系统,其特征在于,所述调度模块还用于在相同转码规格信息对应的转码子任务完成后,生成所述相同转码规格信息对应的转码子文件所对应的合片任务; 所述合片模块还用于执行所述相同转码规格信息对应的合片任务,将所述相同转码规格信息对应的多个转码子文件合并,获得合并后的与所述相同转码规格信息对应的转码视频文件。
4.根据权利要求1所述的系统,其特征在于,所述调度模块还用于获取所述转码子任务对应的转码规格信息,根据所述获取的转码规格信息估算所述转码子任务对应的转码耗时;按照转码耗时从高到低的顺序为对应的所述转码子任务分配所述转码模块对应的可用资源。
5.根据权利要求1所述的系统,其特征在于,所述调度模块包括: 切片任务调度模块,用于获取所述切片模块对应的可用资源数,根据所述切片模块对应的可用资源数向对应的所述切片模块调度所述切片任务; 转码子任务调度模块,用于获取所述转码模块对应的可用资源数,根据所述转码模块对应的可用资源数向对应的所述转码模块调度所述转码子任务; 合片任务调度模块,用于获取所述合片模块对应的可用资源数,根据所述合片模块对应的可用资源数向对应的所述合片模块调度所述合片任务。
6.一种视频转码方法,所述方法包括: 生成视频源文件的切片任务; 执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件; 生成对应每个所述视频子文件的转码子任务;执行所述转码子任务对每个所述视频子文件进行转码,获得对应的多个转码子文件; 生成对应所述转码子文件的合片任务; 执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件。
7.根据权利要求6所述的方法,其特征在于,所述执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件之前还包括: 根据预设的切片阈值和/或用于转码的资源总数计算预计视频子文件数; 根据所述预计视频子文件数为转码预分配用于转码的可用资源数量; 所述执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件之后,还包括: 获取所述视频子文件数,根据所述视频子文件数更新所述预分配的用于转码的可用资源数量。
8.根据权 利要求6所述的方法,其特征在于,所述生成对应所述转码子文件的合片任务,包括: 相同转码规格信息对应的转码子任务完成后,生成所述相同转码规格信息对应的转码子文件所对应的合片任务; 所述执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件,包括: 执行所述相同转码规格信息对应的合片任务,将所述相同转码规格信息对应的多个转码子文件合并,获得合并后的与所述相同转码规格信息对应的转码视频文件。
9.根据权利要求6所述的方法,其特征在于,所述生成对应每个所述视频子文件的转码子任务之后,还包括: 获取所述转码子任务对应的转码规格信息,根据所述获取的转码规格信息估算所述转码子任务对应的转码耗时; 按照转码耗时从高到低的顺序为对应的所述转码子任务分配用于转码的可用资源。
10.根据权利要求6所述的方法,其特征在于,所述执行所述切片任务对所述视频源文件进行切片,获得多个视频子文件之前,还包括: 获取用于切片的可用资源数,根据所述用于切片的可用资源数为所述切片任务分配用于切片的可用资源; 所述执行所述转码子任务对每个所述视频子文件进行转码,获得对应的多个转码子文件之前,还包括: 获取用于转码的可用资源数,根据所述用于转码的可用资源数为所述转码子任务分配用于转码的可用资源; 所述执行所述合片任务将所述多个转码子文件合并,获得合并后的转码视频文件之前,还包括: 获取用于合片的可用资源数,根据所述用于合片的可用资源数为所述合片任务分配用于合片的可用资源。
【文档编号】H04N21/234GK103458270SQ201310409688
【公开日】2013年12月18日 申请日期:2013年9月9日 优先权日:2013年9月9日
【发明者】陈智伟 申请人:深圳市融创天下科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1