具体实施方式
图1为本发明实施例提供的一种多视频转码调度方法流程图。该方法具体步骤如下:
步骤S101、计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,所述转码完成时刻相对于当前时刻的时长为所述服务器的剩余转码时间和所述视频的转码时长的和。
在本实施例中,计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻的一种可行的实现方式是:预先建立一个能够预测转码时长的数学模型,该数学模型可根据样本视频的参数、转码参数、服务器参数、转码时长,采用线性回归方法获得。如图2所示,首先,准备大量样本视频,将每个样本视频按照不同的转码参数进行转码,并记录其转码时长。收集这些样本视频本身的参数、转码参数、服务器参数及转码时长,然后采用线性回归方法,计算得到能够预测转码时长的数学模型。
本实施例中的多个视频不是样本视频,而是待转码视频,如图3所示,获取待转码视频的格式信息和转码参数,并将待转码视频的格式信息和转码参数作为该数学模型的输入,计算得到所有待转码视频的预计转码时长。
假设转码系统中有M1,M2,…,Mm共m台转码服务器,每台转码服务器均可对待转码视频进行转码操作,当前有n个待转码视频等待转码,即当前有n个任务等待调度,例如,n个待转码视频分别在转码服务器Mi上进行转码预计的转码时长为Ti1,Ti2,…,Tin,当安排任务时,转码服务器Mi上的已安排任务的剩余转码时间记为Ri,初始状态未安排任务,R1,R2,…,Rm均为0。因此,从当前时刻开始,一个待转码视频在一个服务器上的转码完成时刻等于该服务器的剩余转码时间和该待转码视频在该服务器上的转码时长的和。
步骤S102、获取每个视频各自对应的最小的转码完成时刻,并对每个视频各自对应的最小的转码完成时刻按升序排列构成目标序列。
如图4所示,视频a、视频b、视频c、视频d分别为待转码视频,服务器A和服务器B分别为转码服务器,每个视频在每个服务器上预计的转码时长具体如图4所示。假设每个服务器的剩余转码时间为0,当前时刻为0,则每个视频在每个服务器上预计的转码完成时刻如图5所示,可见,视频a、视频b、视频c、视频d在服务器A上预计的转码时长小于视频a、视频b、视频c、视频d在服务器B上预计的转码时长,即视频a、视频b、视频c、视频d在服务器A上对应有最小的转码完成时刻,并对视频a、视频b、视频c、视频d在服务器A上分别对应的最小的转码完成时刻按升序排列构成目标序列1、2、4、8。
步骤S103、计算所述目标序列的标准差。
在图5中,计算得到最小完成时刻1、2、4、8的标准差为2.68。
步骤S104、确定所述目标序列中的两个相邻的转码完成时刻,所述两个相邻的转码完成时刻的差值大于所述标准差。
从目标序列1、2、4、8中确定出两个相邻的转码完成时刻,以使两个相邻的转码完成时刻的差值大于所述标准差,由于1、2的差值小于标准差2.68,2、4的差值小于标准差2.68,4、8的差值大于标准差2.68,则4、8即是所求的两个相邻的转码完成时刻。
步骤S105、若所述两个相邻的转码完成时刻在所述目标序列的后半部分,则将所述目标序列中的最后一个转码完成时刻对应的视频安排在服务器上进行转码。
由于4、8在目标序列1、2、4、8的后半部分,因此,将目标序列1、2、4、8中的最后一个转码完成时刻8对应的视频即视频d,安排在能使视频d的转码时长最小的服务器即服务器A上进行转码。
将视频d安排在服务器A上之后,将视频d对应的转码完成时刻从目标序列中删除,同时,也将视频d对应的转码完成时刻从服务器B对应的序列中删除。同时,更新目标序列中剩余的转码完成时刻1、2、4,可选的,在1、2、4的基础上分别加上视频d在服务器A上的转码时长,如图6所示。
根据图6可知,视频a、视频b、视频c在服务器A上预计的转码时长大于视频a、视频b、视频c在服务器B上预计的转码时长,即视频a、视频b、视频c在服务器B上对应有最小的转码完成时刻,并对视频a、视频b、视频c在服务器B上分别对应的最小的转码完成时刻按升序排列构成目标序列2、4、8。目标序列2、4、8的标准差为2.49,同理,找到相邻时刻差值大于标准差的相邻时刻为4、8,4、8在目标序列2、4、8的后半部分,因此,将目标序列2、4、8中的最后一个转码完成时刻8对应的视频即视频c,安排在能使视频c的转码时长最小的服务器即服务器B上进行转码,如图6所示。
将视频c安排在服务器B上之后,将视频c对应的转码完成时刻从目标序列中删除,同时,也将视频c对应的转码完成时刻从服务器A对应的序列中删除。同时,更新目标序列中剩余的转码完成时刻2、4,可选的,在2、4的基础上分别加上视频c在服务器B上的转码时长8,如图7所示。
根据图7可知,视频a在服务器A上的转码完成时刻最小,因此,将视频a安排在服务器A上进行转码,将视频a安排在服务器A上之后,将视频a对应的转码完成时刻从目标序列中删除,同时,也将视频a对应的转码完成时刻从服务器B对应的序列中删除。同时,更新服务器A对应的序列中视频b的转码完成时刻,即在视频b的转码完成时刻10的基础上加视频a在服务器A上的转码时长1,如图8所述。
根据图8可知,视频b在服务器A上的转码完成时刻小于视频b在服务器B上的转码完成时刻,因此,将视频b安排在服务器A上进行转码,如图8所示。
如图8所示,整体转码时长为11=(8+1+2),平均转码时长为9.5=(8+8+1+2)/2。
在图4的基础上,若采用现有技术中FIFO调度方法,由于FIFO调度方法不考虑视频之间的差异,假设服务器按照先A后B的顺序接任务,则其调度结果如图9所示。整体转码时长为20=(4+16),平均转码时长为12.5=(1+4+4+16)/2。
因此,相比于图8和图9,本实施例所述的方法更优。
步骤S106、若所述两个相邻的转码完成时刻在所述目标序列的前半部分,则将所述目标序列中的第一个转码完成时刻对应的视频安排在服务器上进行转码。
本发明实施例通过计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,根据每个视频对应的最小的转码完成时刻,对多个视频进行高效的转码调度,使转码系统中的转码服务器的性能利用率和负载均衡度都达到较高的水准,减少了多视频转码的整体耗时,提高了转码系统的效率。
图10为本发明实施例提供的另一种多视频转码调度方法流程图。如图10所示,本实施例所述的方法包括:
步骤S1001、获取除所述多个视频之外的新的视频。
在上述实施例的基础上,假设在安排视频d、c后的一段时间内,该段时间小于8,即服务器A还没有处理完视频d,服务器B还没有处理完视频c,此时,转码系统又接收到了用户提交的新的视频e。
步骤S1002、确定所述新的视频分别在多个服务器中每个服务器上的转码完成时刻。
假设视频e在服务器A上的转码时长为10,视频e在服务器B上的转码时长为20,由于此时服务器A、B尚未就绪,所以视频e将与尚未转码的视频a,b一起进行调度算法的计算,如图11所示,视频e在服务器A上的转码完成时刻为18=(10+8),视频e在服务器B上的转码完成时刻为28=(20+8)。
步骤S1003、获取所述新的视频对应的最小的转码完成时刻,以及所述最小的转码完成时刻对应的服务器。
根据图11可知,视频e在服务器A上的转码完成时刻小于视频e在服务器B上的转码完成时刻。
步骤S1004、对所述服务器上未转码的视频的转码完成时刻和所述新的视频对应的最小的转码完成时刻按升序排列构成所述目标序列。
对服务器A上未转码的视频a和视频b的转码完成时刻9、10,以及视频e在服务器A上的转码完成时刻18按升序排列构成目标序列9、10、18。
步骤S1005、计算所述目标序列的标准差。
目标序列9、10、18的标准差为4.03。
步骤S1006、确定所述目标序列中的两个相邻的转码完成时刻,所述两个相邻的转码完成时刻的差值大于所述标准差。
找到相邻时刻差值大于标准差的相邻时刻为10、18,10、18在目标序列9、10、18的后半部分。
步骤S1007、若所述两个相邻的转码完成时刻在所述目标序列的后半部分,则将所述目标序列中的最后一个转码完成时刻对应的视频安排在服务器上进行转码。
由于10、18在目标序列9、10、18的后半部分,因此,将目标序列9、10、18中的最后一个转码完成时刻18对应的视频e安排在服务器A上进行转码,更新目标序列中剩余的转码完成时刻9、10,可选的,在9、10的基础上分别加上视频e在服务器A上的转码时长10,则更新后的目标序列即服务器A对应的序列变为19、20。此时,服务器B对应的序列依然为10、12,由于视频a、视频b在服务器B上的转码完成时刻小于视频a、视频b在服务器A上的转码完成时刻,因此,分别安排视频a、视频b在服务器B上进行转码,如图11所示的最终调度结果。
步骤S1008、若所述两个相邻的转码完成时刻在所述目标序列的前半部分,则将所述目标序列中的第一个转码完成时刻对应的视频安排在服务器上进行转码。
本发明实施例通过计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,根据每个视频对应的最小的转码完成时刻,对多个视频进行高效的转码调度,使转码系统中的转码服务器的性能利用率和负载均衡度都达到较高的水准,减少了多视频转码的整体耗时,提高了转码系统的效率。
图12为本发明实施例提供的一种多视频转码调度装置的结构图。本发明实施例提供的多视频转码调度装置可以执行多视频转码调度方法实施例提供的处理流程,如图12所示,多视频转码调度装置包括计算模块121、排序模块122、确定模块123、调度模块124;其中,计算模块121用于计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,所述转码完成时刻相对于当前时刻的时长为所述服务器的剩余转码时间和所述视频的转码时长的和;排序模块122用于对每个视频各自对应的最小的转码完成时刻按升序排列构成目标序列;计算模块121还用于计算所述目标序列的标准差;确定模块123用于确定所述目标序列中的两个相邻的转码完成时刻,所述两个相邻的转码完成时刻的差值大于所述标准差;调度模块124用于当所述两个相邻的转码完成时刻在所述目标序列的后半部分时,将所述目标序列中的最后一个转码完成时刻对应的视频安排在服务器上进行转码;当所述两个相邻的转码完成时刻在所述目标序列的前半部分时,将所述目标序列中的第一个转码完成时刻对应的视频安排在服务器上进行转码。
本发明实施例通过计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,根据每个视频对应的最小的转码完成时刻,对多个视频进行高效的转码调度,使转码系统中的转码服务器的性能利用率和负载均衡度都达到较高的水准,减少了多视频转码的整体耗时,提高了转码系统的效率。
图13为本发明实施例提供的另一种多视频转码调度装置的结构图。在上述实施例的基础上,多视频转码调度装置还包括:删除模块125和更新模块126,删除模块125用于将所述目标序列中的最后一个转码完成时刻从所述目标序列中删除,更新模块126用于更新所述目标序列中剩余的转码完成时刻。或者,删除模块125用于将所述目标序列中的第一个转码完成时刻从所述目标序列中删除;更新模块126用于更新所述目标序列中剩余的转码完成时刻。
另外,在本实施例的基础上,多视频转码调度装置还包括:获取模块127,获取模块127用于获取除所述多个视频之外的新的视频;确定模块123还用于确定所述新的视频分别在多个服务器中每个服务器上的转码完成时刻;获取模块127还用于获取所述新的视频对应的最小的转码完成时刻,以及所述最小的转码完成时刻对应的服务器;排序模块122还用于对所述服务器上未转码的视频的转码完成时刻和所述新的视频对应的最小的转码完成时刻按升序排列构成所述目标序列。
可选的,更新模块126具体用于在所述目标序列中剩余的转码完成时刻上分别加上从所述目标序列中删除的转码完成时刻对应的转码时长。
此外,多视频转码调度装置还包括:建模模块128,建模模块128用于采用线性回归方法,根据样本视频的参数、转码参数、服务器参数、转码时长建立预测转码时长的数学模型;计算模块121具体用于根据预测转码时长的数学模型计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻。
本发明实施例提供的多视频转码调度装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,根据每个视频对应的最小的转码完成时刻,对多个视频进行高效的转码调度,使转码系统中的转码服务器的性能利用率和负载均衡度都达到较高的水准,减少了多视频转码的整体耗时,提高了转码系统的效率。
综上所述,本发明实施例通过计算多个视频中每个视频分别在多个服务器中每个服务器上的转码完成时刻,根据每个视频对应的最小的转码完成时刻,对多个视频进行高效的转码调度,使转码系统中的转码服务器的性能利用率和负载均衡度都达到较高的水准,减少了多视频转码的整体耗时,提高了转码系统的效率。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。