具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种分布式视频转码方法及相关设备、***,能够有效缩短视频转码时间,提升视频转码效率。以下分别进行详细说明。
请参阅图1,图1是本发明第一实施例公开的一种分布式视频转码方法的流程图。其中,图1所描述的分布式视频转码方法适用于各种视频发布应用、***以及平台,以适应异构网络和多终端环境的需要。以适应不同的网络带宽、不同的终端处理能力和不同的用户需求。如图1所示,该分布式视频转码方法可以包括以下步骤。
S101、提交转码客户端将视频文件的时长进行分段标识,获得该视频文件的各个分段时长以及每个分段时长的分段起始时间。
本发明实施例中,上述提交转码客户端可以位于提交转码客户端集群中,提交转码客户端集群中可以包括多个提交转码客户端,而上述提交转码客户端可以是提交转码客户端集群中的任一提交转码客户端。
本发明实施例中,提交转码客户端可以预先获取包括视频标识ID的视频文件,进而提交转码客户端可以将视频文件的时长进行分段标识,以获得该视频文件的各个分段时长以及每个分段时长的分段起始时间。
举例来说,提交转码客户端获取视频文件的方式可以包括以下步骤:
步骤11)、提交转码客户端判断是否满足视频文件获取条件,其中,满足视频文件获取条件可以包括到达视频文件获取时间,和/或提交转码客户端的负载值低于预设阈值;其中,提交转码客户端的负载值可以是CPU利用率、内存利用率等;
步骤12)、若满足视频文件获取条件,提交转码客户端可以从媒体资源存储***中获取视频文件;反之,若未满足视频文件获取条件,提交转码客户端可以暂缓从媒体资源存储***中获取视频文件。
本发明实施例中,通过上述步骤11)和步骤12),可以实现由提交转码客户端主动触发从媒体资源存储***中获取视频文件。可选地,提交转码客户端一次可以从媒体资源存储***中获取一个视频文件,或者,提交转码客户端一次可以从媒体资源存储***中获取一批的视频文件,本发明实施例不作限定。
其中,媒体资源存储***中的视频文件是由视频提供商(即用户)上传到媒体资源存储***的,媒体资源存储***可以为视频提供商(即用户)提供视频上传端口,允许视频提供商(即用户)通过该视频上传端口上传视频文件至媒体资源存储***。
再举例来说,提交转码客户端获取视频文件的方式可以包括以下步骤:
步骤21)、提交转码客户端接收媒体资源存储***传输的视频文件下载任务消息,该视频文件下载任务消息包括下载地址以及视频文件的视频标识ID;
步骤22)、提交转码客户端根据该下载地址,向媒体资源存储***发送视频文件下载请求,该视频文件下载请求包括该视频标识ID;
步骤23)、提交转码客户端接收媒体资源存储***发送该视频标识ID对应的视频文件。
本发明实施例中,通过上述步骤21)~步骤23),可以实现由媒体资源存储***主动地触发提交转码客户端从媒体资源存储***中获取指定的视频文件。可选地,媒体资源存储***可以在收到视频提供商(即用户)通过视频上传端口上传的视频文件之后,向提交转码客户端传输包括下载地址以及视频文件的视频标识ID的视频文件下载任务消息,以触发提交转码客户端从媒体资源存储***中获取指定的视频文件。
本发明实施例中,提交转码客户端可以按照预先设定的分段时长的大小,将视频文件的时长进行分段标识,获得该视频文件的各个分段时长以及每个分段时长的分段起始时间。
举例来说,假设预先设定的分段时长的大小为5分钟,并且视频文件的时长为15分钟,那么提交转码客户端可以将视频文件的时长进行分段标识,获得该视频文件的3个分段时长,这3个分段时长均为5分钟,即0—5分钟、5—10分钟以及10—15分钟,其中,这3个分段时长的分段起始时间分别为第0分钟、第5分钟以及第10分钟。
S102、提交转码客户端向转码调度端传输转码任务消息,该转码任务消息包括该视频文件的存储地址、视频标识ID、各个分段时长以及每个分段时长的分段起始时间。
本发明实施例中,转码调度端可以位于转码调度端集群中,该转码调度端可以是转码调度端集群中负载值低于第一阈值的任意一个转码调度端。其中,转码调度端的负载值可以是CPU利用率、内存利用率等。
本发明实施例中,转码调度端集群中的各个转码调度端之间互相独立,且相互容灾,任何一个转码调度端失效之后,会由其它转码调度端来接管这个失效的转码调度端的任务,并且提交转码客户端也不会再向这个失效的转码调度端传输转码任务消息。
在图1所描述的方法中,提交转码客户端执行步骤S101之后,以及提交转码客户端执行步骤S102之前,还可以执行以下步骤:
提交转码客户端将该视频文件存储至分布式文件存储集群。
相应地,在步骤S102中,提交转码客户端向转码调度端传输的转码任务消息包括的视频文件的存储地址可以是该视频文件在分布式文件存储集群中的存储地址。
S103、转码调度端向各个目标转码执行端传输转码执行消息;每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间。
本发明实施例中,上述的各个目标转码执行端可以是转码执行端集群中的负载值低于第二阈值的各个转码执行端;其中,各个目标转码执行端的数目与上述各个分段时长的数目相同。其中,转码执行端的负载值可以是转码任务数、CPU利用率、内存利用率等。
举例来说,假设视频文件的时长为15分钟,提交转码客户端可以将视频文件的时长进行分段标识,获得该视频文件的3个分段时长,这3个分段时长均为5分钟,即0—5分钟、5—10分钟以及10—15分钟,并且这3个分段时长的分段起始时间分别为第0分钟、第5分钟以及第10分钟。那么,转码调度端可以向第1个目标转码执行端传输转码执行消息,该转码执行消息包括该存储地址、视频标识ID、一个分段时长5分钟(即0—5分钟)以及该分段时长的分段起始时间第0分钟;以及,转码调度端向第2个目标转码执行端传输转码执行消息,该转码执行消息包括该存储地址、视频标识ID、一个分段时长5分钟(即5—10分钟)以及该分段时长的分段起始时间第5分钟;以及,转码调度端可以向第3个目标转码执行端传输转码执行消息,该转码执行消息包括该存储地址、视频标识ID、一个分段时长5分钟(即10—15分钟)以及该分段时长的分段起始时间第10分钟。
S104、各个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID获取该视频文件,并对该转码执行消息包括的该分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频进行转码,获得转码结果,并传输给转码执行合并端。
如前面所描述的,本发明实施例中,提交转码客户端执行步骤S101之后,以及提交转码客户端执行步骤S102之前,提交转码客户端先将该视频文件存储至分布式文件存储集群。相应地,本发明实施例中,各个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID获取该视频文件的方式可以为:
各个目标转码执行端可以根据各自收到的转码执行消息包括的存储地址,向分布式文件存储集群发送视频文件读取请求,该视频文件读取请求包括视频标识ID;以及各个目标转码执行端各自接收分布式文件存储集群发送的视频标识ID对应的视频文件。
举例来说,第1个目标转码执行端、第2个目标转码执行端以及第3个目标转码执行端可以根据各自收到的转码执行消息包括的存储地址,向分布式文件存储集群发送视频文件读取请求,该视频文件读取请求包括视频标识ID;以及,第1个目标转码执行端、第2个目标转码执行端以及第3个目标转码执行端各自接收分布式文件存储集群发送的视频标识ID对应的视频文件;进一步地,第1个目标转码执行端可以根据其收到的传输转码执行消息包括的一个分段时长5分钟(即0—5分钟)以及该分段时长的分段起始时间第0分钟所限定的该视频文件中的对应视频进行转码,获得转码结果;第2个目标转码执行端可以根据其收到的传输转码执行消息包括的一个分段时长5分钟(即5—10分钟)以及该分段时长的分段起始时间第5分钟所限定的该视频文件中的对应视频进行转码,获得转码结果;第3个目标转码执行端可以根据其收到的传输转码执行消息包括的一个分段时长5分钟(即10—15分钟)以及该分段时长的分段起始时间第10分钟所限定的该视频文件中的对应视频进行转码,获得转码结果。
S105、转码执行合并端将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
本发明实施例中,转码执行合并端可以是上述各个目标转码执行端中的任意一个目标转码执行端,或者,转码执行合并端可以是转码执行端集群中除上述各个目标转码执行端之外的任意一个转码执行端。
举例来说,转码执行合并端可以将第1个目标转码执行端、第2个目标转码执行端以及第3个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
在图1所描述的方法中,提交转码客户端将视频文件存储至分布式文件存储集群之后,以及提交转码客户端执行步骤S102之前,还可以执行以下步骤:
提交转码客户端从转码资源管理集群中获取转码调度端集群中的各个转码调度端上报的负载值,并选取负载值低于第一阈值的任意一个转码调度端。
其中,转码调度端集群中的各个转码调度端将负载值上报给转码资源管理集群进行统一管理,而不上报给提交转码客户端,可以很大程度上减轻提交转码客户端的负载,让提交转码客户端专注于做向转码调度端传输转码任务消息的工作。
在图1所描述的方法中,提交转码客户端执行步骤S102之后,以及转码调度端执行步骤S103之前,还可以执行以下步骤:
转码调度端从转码资源管理集群中获取转码执行端集群中的各个转码执行端上报的负载值,并选取负载值低于第二阈值的各个转码执行端作为各个目标转码执行端;其中,各个目标转码执行端的数目与上述各个分段时长的数目相同。
其中,转码执行端集群中的各个转码执行端将负载值上报给转码资源管理集群进行统一管理,而不上报给转码调度端,可以很大程度上减轻转码调度端的负载,让转码调度端专注于做向目标转码执行端传输转码执行消息的工作。
在图1所描述的方法中,转码调度端执行步骤S103之后,还可以执行以下步骤:
转码调度端向转码执行合并端发送合并任务执行消息,该合并任务执行消息用于触发转码执行合并端将各个目标转码执行端所获得的转码结果进行合并。
在图1所描述的方法中,不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
在图1所描述的方法中,转码调度端集群可以支持多转码调度端,相互独立,相互容灾。这样接收转码任务消息及分派转码执行消息就不局限于单转码调度端,转码调度端的可扩展性强。
在图1所描述的方法中,转码执行端的负载值上报到转码资源管理集群来保证一致性,降低转码调度端的负载,转码调度端只需要从转码资源管理集群获取转码执行端的负载值就可以了。
请参阅图2,图2是本发明第二实施例公开的另一种分布式视频转码方法的流程图。如图2所示,该分布式视频转码方法可以包括以下步骤。
S201、提交转码客户端获取视频文件,该视频文件包括视频标识ID。
本发明实施例中,上述提交转码客户端可以是提交转码客户端集群中的任一提交转码客户端。
本发明实施例中,提交转码客户端可以执行前面实施例中描述的步骤11)~步骤12)来实现主动从媒体资源存储***中获取视频文件。可选地,提交转码客户端一次可以从媒体资源存储***中获取一个视频文件,或者,提交转码客户端一次可以从媒体资源存储***中获取一批的视频文件,本发明实施例不作限定。
或者,本发明实施例中,提交转码客户端也可以执行前面实施例中描述的步骤21)~步骤23),实现由媒体资源存储***触发提交转码客户端从媒体资源存储***中获取指定的视频文件。
S202、提交转码客户端将视频文件的时长进行分段标识,获得该视频文件的N(大于等于2)个分段时长以及每个分段时长的分段起始时间。
本发明实施例中,提交转码客户端可以按照预先设定的分段时长的大小,将视频文件的时长进行分段标识,获得该视频文件的N个分段时长以及每个分段时长的分段起始时间。
举例来说,假设预先设定的分段时长的大小为5分钟,并且视频文件的时长为15分钟,那么提交转码客户端可以将视频文件的时长进行分段标识,获得该视频文件的3个分段时长,这3个分段时长均为5分钟,即0—5分钟、5—10分钟以及10—15分钟,其中,这3个分段时长的分段起始时间为别为第0分钟、第5分钟以及第10分钟。
S203、提交转码客户端将视频文件存储至分布式文件存储集群。
S204、提交转码客户端从转码资源管理集群中获取转码调度端集群中的各个转码调度端上报的负载值,并选取负载值低于第一阈值的任意一个转码调度端。
本发明实施例中,转码调度端集群中的各个转码调度端将负载值上报给转码资源管理集群进行统一管理,而不上报给提交转码客户端,可以很大程度上减轻提交转码客户端的负载,让提交转码客户端专注于做向转码调度端传输转码任务消息的工作。
本发明实施例中,转码调度端的负载值可以是CPU利用率、内存利用率等。
本发明实施例中,转码调度端集群中的各个转码调度端之间互相独立,且相互容灾,任何一个转码调度端失效之后,会由其它转码调度端来接管这个失效的转码调度端的任务,并且提交转码客户端也不会再向这个失效的转码调度端传输转码任务消息。
S205、提交转码客户端向转码调度端传输转码任务消息,该转码任务消息包括该视频文件的存储地址、视频标识ID、各个分段时长以及每个分段时长的分段起始时间。
本发明实施例中,提交转码客户端向转码调度端传输的转码任务消息包括的视频文件的存储地址是该视频文件在分布式文件存储集群中的存储地址。
本发明实施例中,提交转码客户端向转码调度端传输的转码任务消息可以看作是一个Map任务,并且该转码任务消息可以是asn消息。其中,该asn消息可以通过以下编码来实现,即:
S206、转码调度端从转码资源管理集群中获取转码执行端集群中的各个转码执行端上报的负载值,并选取负载值低于第二阈值的N个转码执行端作为N个目标转码执行端。
其中,N个目标转码执行端的数目与上述N个分段时长的数目相同。
本发明实施例中,转码调度端可以从转码资源管理集群中获取转码执行端集群中的各个转码执行端上报的负载值的视图列表,从视图列表中选择负载值低于第二阈值的N个转码执行端进行派发任务,派发任务也是通过asn消息传送。
本发明实施例中,转码调度端在启动的时候会关注转码资源管理集群中的转码执行端列表,当转码执行端有更新节点时,转码调度端可以收到通知并更新转码执行端列表,这样转码执行端列表保存的为最新状态。
其中,转码执行端集群中的各个转码执行端将负载值上报给转码资源管理集群进行统一管理,而不上报给转码调度端,可以很大程度上减轻转码调度端的负载,让转码调度端专注于做向目标转码执行端传输转码执行消息的工作。
其中,转码执行端的负载值可以是转码任务数、CPU利用率、内存利用率等。
S207、转码调度端向N个目标转码执行端传输转码执行消息;每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间。
举例来说,假设视频文件的时长为15分钟,提交转码客户端可以将视频文件的时长进行分段标识,获得该视频文件的3个分段时长,这3个分段时长均为5分钟,即0—5分钟、5—10分钟以及10—15分钟,并且这3个分段时长的分段起始时间为别为第0分钟、第5分钟以及第10分钟。那么,转码调度端可以向目标转码执行端1传输转码执行消息,该转码执行消息包括该存储地址、视频标识ID、一个分段时长5分钟(即0—5分钟)以及该分段时长的分段起始时间第0分钟;以及,转码调度端向目标转码执行端2传输转码执行消息,该转码执行消息包括该存储地址、视频标识ID、一个分段时长5分钟(即5—10分钟)以及该分段时长的分段起始时间第5分钟;以及,转码调度端可以向目标转码执行端3传输转码执行消息,该转码执行消息包括该存储地址、视频标识ID、一个分段时长5分钟(即10—15分钟)以及该分段时长的分段起始时间第10分钟。
S208、N个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID从分布式存储集群中获取该视频文件,并对该转码执行消息包括的该分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频进行转码,获得转码结果,并传输给转码执行合并端。
本发明实施例中,N个目标转码执行端可以根据各自收到的转码执行消息包括的存储地址,向分布式文件存储集群发送视频文件读取请求,该视频文件读取请求包括视频标识ID;以及N个目标转码执行端各自接收分布式文件存储集群发送的视频标识ID对应的视频文件。
举例来说,目标转码执行端1~3可以根据各自收到的转码执行消息包括的存储地址,向分布式文件存储集群发送视频文件读取请求,该视频文件读取请求包括视频标识ID;以及,目标转码执行端1~3各自接收分布式文件存储集群发送的视频标识ID对应的视频文件;进一步地,目标转码执行端1可以根据其收到的传输转码执行消息包括的一个分段时长5分钟(即0—5分钟)以及该分段时长的分段起始时间第0分钟所限定的该视频文件中的对应视频进行转码,获得转码结果;目标转码执行端2可以根据其收到的传输转码执行消息包括的一个分段时长5分钟(即5—10分钟)以及该分段时长的分段起始时间第5分钟所限定的该视频文件中的对应视频进行转码,获得转码结果;目标转码执行端3可以根据其收到的传输转码执行消息包括的一个分段时长5分钟(即10—15分钟)以及该分段时长的分段起始时间第10分钟所限定的该视频文件中的对应视频进行转码,获得转码结果。
S209、转码调度端向转码执行合并端发送合并任务执行消息,该合并任务执行消息用于触发转码执行合并端将各个目标转码执行端所获得的转码结果进行合并。
S210、转码执行合并端将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
本发明实施例中,转码执行合并端可以是转码执行端集群中除上述各个目标转码执行端之外的任意一个转码执行端。
本发明实施例中,如图2所示,转码调度端接收到提交转码客户端传输的转码任务消息时,会返回接收成功通知给提交转码客户端;而目标转码执行端转码完毕后也会返回转码成功通知给转码调度端;转码执行合并端在获得转码视频文件后也会返回合并成功通知给转码调度端。
本发明实施例中,各个转码调度端之间是对等的,相互独立的,相互容灾,所以转码调度端的可扩展性强。同时,转码调度端之间做了容灾处理,即任何一台转码调度端失效了,可由其它任何正常的转码调度端来接管失效转码调度端的所接收的任务,并且提交转码客户端也不会再将任务提交到这个失效的转码调度端上。
本发明实施例中,目标转码执行端收到转码执行消息后(如asn消息)后,可以从转码执行消息(如asn消息)中获取视频文件的存储地址、视频标识ID、分段时长以及该分段时长的分段起始时间。有了视频文件的存储地址、视频标识ID就可以从分布式文件***中获取视频文件,有了分段起始时间和分段时长,就可以对该视频文件中的由分段起始时间和分段时长限定的对应视频进行转码了。可见,本发明实施例不需要对视频文件进行预切片处理,可以提高转码并行度,节省转码时间。
本发明实施例中,由于mpegts格式具有自由合并的属性,因此,目标转码执行端可以将视频先转码成mpegts格式的转码结果,转码执行合并端再将各个目标转码执行客户端获得的mpegts格式的转码结果进行合并,并将合并结果转码成mp4格式或者其它封装格式的转码视频文件。经实验证明,使用这种转码方式,拷贝到mp4等容器后得到的转码视频文件只比串行转码后得到的文件体积大约0.01%--1%,以极小的代价换取了合并时分析GOP(GroupofPictures,画面组)序列的时间开销,且不会出现视频不同步、抖动等现象。
本发明实施例中,转码执行端在启动时会上报一个负载值至转码资源管理集群,运行过程中当负载值发生变化,如转码任务数过多,CPU资源繁忙等负载值发生变化时,也会上报给转码资源管理集群。转码资源管理集群维护整个***上所有转码执行端的最新负载值的视图,当转码调度端在需要知道各个目标转码执行端的负载值时,就可以通过转码资源管理集群来获取。
本发明实施例中,转码调度端接收到提交转码客户端提交的转码任务消息后,会根据当前的转码执行端的负载值的视图,只要有一个转码执行端可用,就可以将转码任务消息包括的内容分派出去。可见,本发明分派转码任务的速度非常快,同时还可以设定转码任务消息的优先级,将优先级高的转码任务消息包括的内容优分分派出去。
本发明实施例中,对于这种短视频支持更灵活方便,可以节省转码时间,以更好的支持目前互联网上出现越来越多的短视频需求,如现在的微视,秒拍等应用。
在图2所描述的方法中,不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
在图2所描述的方法中,转码调度端集群可以支持多转码调度端,相互独立,相互容灾。这样接收转码任务消息及分派转码执行消息就不局限于单转码调度端,转码调度端的可扩展性强。
在图2所描述的方法中,转码执行端的负载值上报到转码资源管理集群来保证一致性,降低转码调度端的负载,转码调度端只需要从转码资源管理集群获取转码执行端的负载值就可以了。
请参阅图3,图3是本发明第三实施例公开的另一种分布式视频转码方法的流程图。如图3所示,该分布式视频转码方法可以包括以下步骤。
S301、提交转码客户端将视频文件的时长进行分段标识,获得该视频文件的各个分段时长以及每个分段时长的分段起始时间。
其中,提交转码客户端为提交转码客户端集群中的任一提交转码客户端。
S302、提交转码客户端向转码调度端传输转码任务消息,转码任务消息包括该视频文件的存储地址、视频标识ID、各个分段时长以及每个分段时长的分段起始时间,以触发转码调度端向各个目标转码执行端传输转码执行消息;其中,每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间;由各个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID获取视频文件,并对转码执行消息包括的分段时长以及分段时长的分段起始时间所限定的视频文件中的对应视频进行转码,获得转码结果;以及由转码执行合并端将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
在图3所描述的方法中,提交转码客户端执行步骤S301之前,还可以执行以下步骤:
提交转码客户端获取视频文件,该视频文件包括视频标识ID。
举例来说,提交转码客户端获取视频文件的方式可以包括以下步骤:
步骤11)、提交转码客户端判断是否满足视频文件获取条件,其中,满足视频文件获取条件可以包括到达视频文件获取时间,和/或提交转码客户端的负载值低于预设阈值;其中,提交转码客户端的负载值可以是CPU利用率、内存利用率等;
步骤12)、若满足视频文件获取条件,提交转码客户端可以从媒体资源存储***中获取视频文件;反之,若未满足视频文件获取条件,提交转码客户端可以暂缓从媒体资源存储***中获取视频文件。
本发明实施例中,通过上述步骤11)和步骤12),可以实现由提交转码客户端主动触发从媒体资源存储***中获取视频文件。可选地,提交转码客户端一次可以从媒体资源存储***中获取一个视频文件,或者,提交转码客户端一次可以从媒体资源存储***中获取一批的视频文件,本发明实施例不作限定。
其中,媒体资源存储***中的视频文件是由视频提供商(即用户)上传到媒体资源存储***的,媒体资源存储***可以为视频提供商(即用户)提供视频上传端口,允许视频提供商(即用户)通过该视频上传端口上传视频文件至媒体资源存储***。
再举例来说,提交转码客户端获取视频文件的方式可以包括以下步骤:
步骤21)、提交转码客户端接收媒体资源存储***传输的视频文件下载任务消息,该视频文件下载任务消息包括下载地址以及视频文件的视频标识ID;
步骤22)、提交转码客户端根据该下载地址,向媒体资源存储***发送视频文件下载请求,该视频文件下载请求包括该视频标识ID;
步骤23)、提交转码客户端接收媒体资源存储***发送该视频标识ID对应的视频文件。
本发明实施例中,通过上述步骤21)~步骤23),可以实现由媒体资源存储***主动地触发提交转码客户端从媒体资源存储***中获取指定的视频文件。可选地,媒体资源存储***可以在收到视频提供商(即用户)通过视频上传端口上传的视频文件之后,向提交转码客户端传输包括下载地址以及视频文件的视频标识ID的视频文件下载任务消息,以触发提交转码客户端从媒体资源存储***中获取指定的视频文件。
在图3所描述的方法中,提交转码客户端执行步骤S301之后,以及提交转码客户端执行步骤S302之前,还可以先执行以下步骤:
提交转码客户端将该视频文件存储至分布式文件存储集群。
在图3所描述的方法中,提交转码客户端将该视频文件存储至分布式文件存储集群之后,以及提交转码客户端执行步骤S302之前,还可以先执行以下步骤:
提交转码客户端从转码资源管理集群中获取转码调度端集群中的各个转码调度端上报的负载值,并选取负载值低于第一阈值的任意一个转码调度端。
其中,通过实施图3所描述的方法,使得不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
请参阅图4,图4是本发明第四实施例公开的另一种分布式视频转码方法的流程图。如图4所示,该分布式视频转码方法可以包括以下步骤。
S401、转码调度端接收提交转码客户端传输的转码任务消息,该转码任务消息包括视频文件的存储地址、视频标识ID、视频文件的各个分段时长以及每个分段时长的分段起始时间。
S402、转码调度端向各个目标转码执行端传输转码执行消息,每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间,以触发各个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID获取视频文件,并对转码执行消息包括的分段时长以及分段时长的分段起始时间所限定的该视频文件中的对应视频进行转码,获得转码结果;以及由转码执行合并端将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
在图4所描述的方法中,转码调度端在执行步骤S401之后,以及转码调度端在执行步骤S402之前,还可以先执行以下步骤:
转码调度端从转码资源管理集群中获取转码执行端集群中的各个转码执行端上报的负载值,并选取负载值低于第二阈值的各个转码执行端作为各个目标转码执行端;
其中,各个目标转码执行端的数目与上述各个分段时长的数目相同。
在图4所描述的方法中,转码调度端在执行步骤S402之后,还可以执行以下步骤:
转码调度端向转码执行合并端发送合并任务执行消息,合并任务执行消息用于触发转码执行合并端将各个目标转码执行端所获得的转码结果进行合并。
其中,通过实施图4所描述的方法,使得不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
请参阅图5,图5是本发明第五实施例公开的一种提交转码客户端的结构图。如图5所示,该提交转码客户端可以包括:
时长分段单元501,用于将视频文件的时长进行分段标识,获得该视频文件的各个分段时长以及每个分段时长的分段起始时间;
传输单元502,用于向转码调度端传输转码任务消息,该转码任务消息包括该视频文件的存储地址、视频标识ID、各个分段时长以及每个分段时长的分段起始时间,以触发转码调度端向各个目标转码执行端传输转码执行消息;其中,每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间;由各个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID获取视频文件,并对转码执行消息包括的分段时长以及该分段时长的分段起始时间所限定的视频文件中的对应视频进行转码,获得转码结果;以及由转码执行合并端将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
本发明实施例中,如图5所示,提交转码客户端还包括:
视频获取单元503,用于获取视频文件,并提供给时长分段单元501;其中,该视频文件包括视频标识ID。
本发明实施例中,如图5所示,提交转码客户端还包括:
存储控制单元504,用于在时长分段单元501将视频文件的时长进行分段标识,获得该视频文件的各个分段时长以及每个分段时长的分段起始时间之后,以及传输单元502向转码调度端传输转码任务消息之前,将该视频文件存储至分布式文件存储集群,以及将该视频文件在分布式文件存储集群中的存储地址提供给传输单元502。
本发明实施例中,如图5所示,提交转码客户端还包括:
调度端选取单元505,用于在存储控制单元504将视频文件存储至分布式文件存储集群之后,以及传输单元502向目标转码调度端传输转码任务消息之前,从转码资源管理集群中获取转码调度端集群中的各个转码调度端上报的负载值,并选取负载值低于第一阈值的任意一个转码调度端,并提供给传输单元502。
请一并参阅图6,图6是本发明第六实施例公开的另一种提交转码客户端的结构图。其中,图6所示的提交转码客户端是由图5所示的提交转码客户端进行优化得到的。在图6所示的提交转码客户端中,视频获取单元503包括:
判断子单元5031,用于判断是否满足视频文件获取条件;
获取子单元5032,用于在判断子单元5031的判断结果为是时,从媒体资源存储***中获取视频文件,并提供给时长分段单元501;
其中,满足视频文件获取条件包括到达视频文件获取时间和/或提交转码客户端的负载值低于预设阈值。
请一并参阅图7,图7是本发明第七实施例公开的另一种提交转码客户端的结构图。其中,图7所示的提交转码客户端是由图5所示的提交转码客户端进行优化得到的。在图7所示的提交转码客户端中,视频获取单元503包括:
接收子单元5033,用于接收媒体资源存储***传输的视频文件下载任务消息,该视频文件下载任务消息包括下载地址以及视频文件的视频标识ID;
发送子单元5034,用于根据所述下载地址,向媒体资源存储***发送视频文件下载请求,该视频文件下载请求包括视频标识ID;
接收子单元5033,还用于接收媒体资源存储***发送的视频标识ID对应的视频文件,并提供给时长分段单元501。
其中,通过实施图5~图7所描述的提交转码客户端,使得不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
请参阅图8,图8是本发明第八实施例公开的一种转码调度端的结构图。如图8所示,该转码调度端可以包括:
接收单元801,用于接收提交转码客户端传输的转码任务消息,该转码任务消息包括视频文件的存储地址、视频标识ID、视频文件的各个分段时长以及每个分段时长的分段起始时间;
传输单元802,用于向各个目标转码执行端传输转码执行消息,每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间,以触发各个目标转码执行端根据各自收到的转码执行消息包括的存储地址和视频标识ID获取该视频文件,并对转码执行消息包括的分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频进行转码,获得转码结果;以及由转码执行合并端将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
在图8所示的转码调度端中,还可以包括:
执行端选取单元803,用于在接收单元801接收提交转码客户端传输的转码任务消息之后,以及在传输单元802向各个目标转码执行端传输转码执行消息之前,从转码资源管理集群中获取转码执行端集群中的各个转码执行端上报的负载值,并选取负载值低于第二阈值的各个转码执行端作为各个目标转码执行端,并提供给传输单元802;
其中,各个目标转码执行端的数目与上述各个分段时长的数目相同。
在图8所示的转码调度端中,传输单元802还用于在向各个目标转码执行端传输转码执行消息之后,向转码执行合并端发送合并任务执行消息,该合并任务执行消息用于触发转码执行合并端将各个目标转码执行端所获得的转码结果进行合并。
其中,通过实施图8所描述的转码调度端,使得不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
请参阅图9,图9是本发明实施例第九实施例公开的一种分布式视频转码***的结构图。如图9所示,该分布式***可以包括:
提交转码客户端901,用于将视频文件的时长进行分段标识,获得视频文件的各个分段时长以及每个分段时长的分段起始时间;
提交转码客户端901,还用于向转码调度端902传输转码任务消息,该转码任务消息包括该视频文件的存储地址、视频标识ID、各个分段时长以及每个分段时长的分段起始时间;
转码调度端902,用于向各个目标转码执行端903传输转码执行消息;每个转码执行消息包括该存储地址、视频标识ID、一个分段时长以及该分段时长的分段起始时间;
各个目标转码执行端903,用于根据各自收到的转码执行消息包括的存储地址和视频标识ID获取视频文件,并对转码执行消息包括的该分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频进行转码,获得转码结果;
转码执行合并端904,用于将各个目标转码执行端所获得的转码结果进行合并,获得转码视频文件。
本发明实施例中,提交转码客户端901可以是提交转码客户端集群中的任一提交转码客户端。
本发明实施例中,转码调度端902可以是转码调度端集群中的负载值低于第一阈值的任意一个转码调度端。其中,转码调度端集群中的各个转码调度端相互独立,且相互容灾。
本发明实施例中,转码执行合并端904可以是各个目标转码执行端中的任意一个目标转码执行端,或者,转码执行合并端904可以是转码执行端集群中除了各个目标转码执行端之外的任意一个转码执行端;或者,转码执行合并端904独立于转码执行端集群的设备,本发明实施例不做限定。
在图9所示的***中,提交转码客户端901还用于获取视频文件,该视频文件包括视频标识ID。
举例来说,提交转码客户端901获取视频文件的方式可以包括以下步骤:
步骤11)、提交转码客户端901判断是否满足视频文件获取条件,其中,满足视频文件获取条件可以包括到达视频文件获取时间,和/或提交转码客户端的负载值低于预设阈值;其中,提交转码客户端的负载值可以是CPU利用率、内存利用率等;
步骤12)、若满足视频文件获取条件,提交转码客户端901可以从媒体资源存储***中获取视频文件;反之,若未满足视频文件获取条件,提交转码客户端可以暂缓从媒体资源存储***中获取视频文件。
本发明实施例中,通过上述步骤11)和步骤12),可以实现由提交转码客户端901主动触发从媒体资源存储***中获取视频文件。可选地,提交转码客户端901一次可以从媒体资源存储***中获取一个视频文件,或者,提交转码客户端901一次可以从媒体资源存储***中获取一批的视频文件,本发明实施例不作限定。
其中,媒体资源存储***中的视频文件是由视频提供商(即用户)上传到媒体资源存储***的,媒体资源存储***可以为视频提供商(即用户)提供视频上传端口,允许视频提供商(即用户)通过该视频上传端口上传视频文件至媒体资源存储***。
再举例来说,提交转码客户端901获取视频文件的方式可以包括以下步骤:
步骤21)、提交转码客户端901接收媒体资源存储***传输的视频文件下载任务消息,该视频文件下载任务消息包括下载地址以及视频文件的视频标识ID;
步骤22)、提交转码客户端901根据该下载地址,向媒体资源存储***发送视频文件下载请求,该视频文件下载请求包括该视频标识ID;
步骤23)、提交转码客户端901接收媒体资源存储***发送该视频标识ID对应的视频文件。
本发明实施例中,通过上述步骤21)~步骤23),可以实现由媒体资源存储***主动地触发提交转码客户端901从媒体资源存储***中获取指定的视频文件。可选地,媒体资源存储***可以在收到视频提供商(即用户)通过视频上传端口上传的视频文件之后,向提交转码客户端901传输包括下载地址以及视频文件的视频标识ID的视频文件下载任务消息,以触发提交转码客户端901从媒体资源存储***中获取指定的视频文件。
在图9所示的***中,还包括分布式文件存储集群,其中:
提交转码客户端901,还用于在将视频文件的时长进行分段标识,获得该视频文件的各个分段时长以及每个分段时长的分段起始时间之后,以及在向转码调度端902传输转码任务消息之前,将该视频文件存储至分布式文件存储集群;
相应地,各个目标转码执行端903根据各自收到的转码执行消息包括的存储地址和视频标识ID获取视频文件的方式具体为:
各个目标转码执行端903根据各自收到的转码执行消息包括的存储地址,向分布式文件存储集群发送视频文件读取请求,该视频文件读取请求包括视频标识ID;以及各个目标转码执行端903各自接收分布式文件存储集群发送的视频标识ID对应的视频文件。
在图9所示的***中,还包括转码资源管理集群,转码资源管理集群用于存储转码调度端集群中的各个转码调度端上报的负载值,其中:
提交转码客户端901,还用于在将视频文件存储至分布式文件存储集群之后,以及向转码调度端902传输转码任务消息之前,从转码资源管理集群中获取转码调度端集群中的各个转码调度端上报的负载值,并选取负载值低于第一阈值的任意一个转码调度端902。
在图9所示的***中,转码资源管理集群还用于转码执行端集群中的各个转码执行端上报的负载值;
转码调度端902,还用于在向各个目标转码执行端903传输转码执行消息之前,从转码资源管理集群中获取转码执行端集群中的各个转码执行端上报的负载值,并选取负载值低于第二阈值的各个转码执行端作为各个目标转码执行端903;
其中,各个目标转码执行端的数目与上述各个分段时长的数目相同。
在图9所示的***中,转码调度端902还用于在向各个目标转码执行端903传输转码执行消息之后,向转码执行合并端发送合并任务执行消息,该合并任务执行消息用于触发转码执行合并端904将各个目标转码执行端903所获得的转码结果进行合并。
在图9所描述的***中,不需要对视频文件进行预先切片处理,而是由各个目标转码执行端各自根据收到的存储地址和视频标识ID获取该视频文件,并由各个目标转码执行端对各自收到的一个分段时长以及该分段时长的分段起始时间所限定的该视频文件中的对应视频执行并行转码,从而可以有效地缩短视频转码时间,提升视频转码效率。
在图9所描述的***中,转码调度端集群可以支持多转码调度端,相互独立,相互容灾。这样接收转码任务消息及分派转码执行消息就不局限于单转码调度端,转码调度端的可扩展性强。
在图9所描述的***中,转码执行端的负载值上报到转码资源管理集群来保证一致性,降低转码调度端的负载,转码调度端只需要从转码资源管理集群获取转码执行端的负载值就可以了。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-OnlyMemory,ROM)、随机存取器(RandomAccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例公开的一种分布式视频转码方法及相关设备、***进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。