一种视频转码方法和系统的制作方法_2

文档序号:9814760阅读:来源:国知局
有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]实施例一
[0045]本发明实施例一公开一种视频转码方法,参考图1,所述方法可以包括以下步骤:
[0046]SlOl:获取当前目标视频类别中请求时间最早的转码任务,判断所述转码任务对应的扫描方式,并在发送所述转码任务后,继续获取下一个目标视频类别中请求时间最早的转码任务,并判断其对应的扫描方式。
[0047]其中,所述目标视频类别为在本轮视频转码过程中,预设的视频类别集合内未被访问的视频类别中转码优先级最高的视频类别,所述转码任务包括待转码的视频源文件以及对所述视频源文件进行转码所需的转码参数。
[0048]所述转码参数包括转码类型、转码所需的分辨率和码率,所述转码类型具体为h264转码或h265转码中的任意一种,即本发明支持h264和h265转码,且采用mp4的视频封装格式。
[0049]本发明针对现有视频转码方式由于采用多任务的串行处理,而导致对多运营商的多任务进行转码时,只有一个运营商进行转码,其他运营商等待,从而影响其他运营商转码效率的这一缺点,提出多运营商的概念,并以转码任务所属的运营商ID即operatorID作为转码任务类别的划分依据,且为各运营商赋予同等的转码机会,确保在每轮转码中,各个运营商有被访问且仅被访问一次,并在访问每个运营商时,仅对该运营商中当前请求时间最早的转码任务进行转码(保证同一运营商的任务串行处理)。
[0050]具体实施时,针对具有转码需求的多个运营商,可依据任务请求时间(也即任务入库时间)的先后,以轮询运营商的方式从任务数据库中获取各运营商的任务(后续可对多运营商的多任务进行并行处理),来保证各运营商具有同等的转码机会。
[0051]以任务数据库中共有3个运营商operatorl、operator2、operator3为例,假设按照任务请求时间的先后次序,operatorl先后有3个任务入库:taskl、task2、task3 ;operator2先后有2个任务入库:task4、task5 ;operator3先后有3个任务入库:task6、task7、task8。其中,task4的任务请求时间早于task6、task6的请求时间早于taskl ;task2的请求时间早于task5、task5的请求时间早于task7。
[0052]第一轮轮询中,由于task4的任务请求时间早于task6、task6的请求时间早于taskl,则3个运营商的优先级次序为:operator2优先级最高、operator3次之、operatorl最低,从而,第一轮轮询以operator2、operator3、operator I的顺序分别获取3个运营商的任务 task4、task6、taskl ;相应地,第二轮轮询以 operatorl、operator2、operator3 的优先级顺序获取这3个运营商的任务task2、task5、task7,从而保证了各运营商具有同等的转码机会。
[0053]相较于现有技术,本发明还增添了对视频源文件的扫描方式进行判断的判断功能,即判断视频源文件是隔行扫描还是逐行扫描,以方便后续对其进行有针对性的转码。
[0054]S102:对接收的转码任务执行预设操作,所述预设操作具体为将所述转码任务中的视频源文件分割为预设时长的N个视频子文件,为每个所述视频子文件生成相应的描述信息;并在发送所述转码参数以及N个视频子文件及其所对应的描述信息后,对下一个转码任务进行所述预设操作,其中,所述N为大于I的自然数;
[0055]其中,所述视频子文件的描述信息包括所述视频子文件的时长、帧数以及开始时间、结束时间,该描述信息用于为后续合片操作提供依据。
[0056]所述预设时长可由本领域技术人员依据实际的切片情况对其进行自行定义,例如,可将所述预设时长设定为10秒,将视频源文件分割为10秒一段的多个小视频子文件。
[0057]为便于描述,本实施例分别将执行切片操作、转码操作、合片操作的各个处理实体称为切片模块、转码模块、合片模块。
[0058]当切片模块对当前运营商的任务切片结束,并将切片所得的各视频子文件交由至转码模块进行转码后,切片模块不闲置等待,不必关心当前任务后续的转码、合片处理进度,可以直接获取下一个运营商任务,并开始对其执行切片操作。
[0059]S103:依据所述转码参数,对接收的所述N个视频子文件进行与所述扫描方式相对应的转码处理,得到N个转码子文件,并在发送所述N个转码子文件及其相应的所述描述信息后,对下一个转码任务进行所述转码处理;
[0060]其中,本步骤具体针对转码任务采用的扫描方式对其视频子文件进行有针对性的转码处理。其中,在所述扫描方式为逐行扫描时,基于所述转码参数,采用M个转码子单元以并行处理方式对所述N个视频子文件进行转码,得到N个转码子文件;在所述扫描方式为隔行扫描时,对所述N个视频子文件进行交织处理,并基于所述转码参数,采用M个转码子单元以并行处理方式对交织处理后的各视频子文件进行转码,得到N个转码子文件;所述M为大于I的自然数。
[0061 ] 本发明采用M个转码子单元对N个视频子文件进行并行转码,例如,具体可采用多个转码线程实现各视频子文件的并行转码,节省了转码时间,提高了运营商的转码效率。
[0062]本实施例中,每个转码子单元具有唯一的ID,具体实施时,可通过uuid (UniversalIy Unique Identifier,通用唯一识别码)函数来保证每个转码子单元具有唯一 ID。如果转码子单元(例如转码线程)没有重启,那么整个运行过程其一直会使用此ID,如果转码子单元重新启动了,则其ID也会随之变化。
[0063]转码子单元定时地,例如每间隔60s,向切片模块发送心跳包(即包含其ID的注册包)以请求视频子文件的转码任务,如果此时有转码任务,则转码子单元下载切片模块向其分配的转码任务,然后根据转码参数中定义的转码类型,获取具体需进行h264转码还是h265转码,进而调用相应的264编码器或265编码器实现转码;如果没有请求到任务,则转码子单元间隔5秒钟继续向切片模块请求任务,其中,定时时间间隔及请求失败时继续请求的时间间隔可根据实际需求进行设定。
[0064]相应地,转码模块在对当前运营商任务的各视频子文件转码结束,并将所得的转码子文件交由合片模块后,不必闲置等待,可直接获取下一个运营商的任务,并对其进行各视频子文件的并行转码操作。
[0065]S104:依据所述N个转码子文件相对应的所述描述信息,对所述N个转码子文件进行合片处理,得到所述视频源文件所对应的转码文件,并在上传所述转码文件后,对下一个转码任务进行合片处理。
[0066]合片模块依据描述信息中的视频开始时间、结束时间对各转码子文件进行连接、合并,得到视频源文件所对应的转码文件,为后续的视频播放需求提供了支持。
[0067]同样地,合片模块在将最终合片所得的转码文件上传至指定地址后,例如上传至服务器后,可直接进行下一个运营商任务的合片操作。
[0068]其中,转码结束后,如果转码成功则把转码视频上传回服务器。如果失败,通知服务器,转码失败。
[0069]本发明以流水线处理方式实现了多运营商对转码流程中各处理环节资源的共享,各运营商具有同等的转码机会,且多运营商的多任务按请求时间的先后顺序轮流使用切片、转码、合并的各处理环节的资源,各个处理环节在将当前运营商任务交由后续处理环节后,不需闲置等待,可直接开始下一个运营商的任务处理,实现了多运营商多任务的并行处理。
[0070]例如,假设有两个运营商operatorl、operator2的两个转码任务:taskl和task2,operatorl的taskl首先进入转码流程,切片模块将taskl的视频源文件切割为多个转码段(视频子文件);之后,转码模块获取taskl的各转码段对其进行转码,同时,operator2的task2进入转码流程,由切片模块对其进行切割操作;在转码模块对taskl的文件转码结束后,合片模块获取taskl的各转码子文件对其进行合并处理,转码模块继续对task2进行转码……,直至各运营商任务全部处理结束,节省了总的转码处理时间。
[0071]由以上描述可知,本发明提供的视频转码方法和系统,为不同类别的视频赋予均等的转码机会,具体地,可将运营商ID作为视频分类依据,并为不同运营商赋予同等的转码机会,在每轮转码中,确保各个运营商有被访问且仅被访问一次,并在访问每个运营商时,仅对该运营商中当前请求时间最早的转码任务进行转码,且本发明可对多个运营商的多个转码任务进行并行处理,具体地,以多个运营商共享流水线资源的流水线处理方式对不同运营商的多个转码任务进行并行处理,实现了多运营商对转码过程中各处理环节(切片、转码、合片)的资源共享,各处理环节在将当前运营商任务交由下一处理
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1