视频对齐方法、视频编码方法、装置及存储介质与流程

文档序号:31670296发布日期:2022-09-28 00:47阅读:121来源:国知局
视频对齐方法、视频编码方法、装置及存储介质与流程

1.本技术涉及计算机领域,尤其涉及一种视频对齐方法、视频编码方法、装置及存储介质。


背景技术:

2.当前,hls(http live streaming,超文本直播流)协议为实现直播业务的主流技术。基于hls协议进行视频直播,可以解决视频直播时出现的卡顿问题。比如,在地铁等网络波动明显的场景下,看视频直播卡顿总会发生,这时候通过切换到清晰度低的多媒体流,可以很好的避免卡顿的发生。
3.然而,由于不同清晰度的多媒体流的切片通常分布在不同的服务器中,或分布在同一服务器的不同任务进程中,所以在视频直播的场景下,当进行不同清晰度的多媒体流的切换时,会出现不同清晰度的多媒体流的切片以及音视频时间戳无法精确对齐的问题。


技术实现要素:

4.本技术提供了一种视频对齐方法、视频编码方法、装置及存储介质,用以解决不同清晰度的多媒体流的切片以及音视频时间戳无法精确对齐的问题。
5.第一方面,提供一种视频编码方法,包括:
6.对于n路直播码流中的任意一路直播码流,获取所述任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;所述起始基准时间为所述n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻;
7.基于所述编码时刻、所述标准索引号和所述起始基准时间,计算所述任意一个图像组的编码延时;
8.按照所述编码延时更新所述标准索引号,得到所述任意一个图像组的索引号;当所述编码延时大于标准图像组时长时,所述索引号大于所述标准索引号。
9.可选地,基于所述编码时刻、所述标准索引号和所述起始基准时间,计算所述任意一个图像组的编码延时,包括:
10.计算所述标准索引号与标准图像组时长的乘积,得到所述任意一个图像组在所述编码生产虚拟时间轴上的编码时刻偏移;
11.计算所述编码时刻偏移和所述起始基准时间之和,得到求和结果;
12.计算所述编码时刻与所述求和结果之差,得到所述编码延时。
13.可选地,按照所述编码延时更新所述标准索引号,得到所述任意一个图像组的索引号,包括:
14.判断所述编码延时是否大于n个标准图像组时长;
15.若大于所述n个标准图像组时长,确定所述任意一个图像组的索引号为所述标准索引号加n;
16.若不大于所述n个标准图像组时长,更新n=n-1,返回执行判断所述编码延时是否
大于n个标准图像组时长的步骤,直至n更新为1时,若所述编码延时大于1个标准图像组时长,则确定所述任意一个图像组的索引号为所述标准索引号加1,若所述编码延时不大于1个标准图像组时长,确定所述任意一个图像组的索引号为标准索引号。
17.第二方面,提供一种视频对齐方法,包括:
18.获取一路直播码流中的任意一个图像组;
19.解析所述任意一个图像组,获取所述任意一个图像组的对齐参数,所述对齐参数包括起始基准时间、所述任意一个图像组的索引号和所述任意一个图像组中首个视频帧的时间戳偏移,所述起始基准时间为所述n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,所述任意一个图像组的索引号与所述任意一个图像组的编码延时相关;所述时间戳偏移为所述首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,所述目标图像组为对所述任意一个图像组进行切片的切片任务启动时处理的第一个图像组;
20.按照所述任意一个图像组的索引号,确定所述任意一个图像组在所述一路直播码流中的切分位置;
21.基于所述起始基准时间和所述时间戳偏移,确定所述任意一个图像组的音频播放时间和视频播放时间。
22.可选地,按照所述任意一个图像组的索引号,确定所述任意一个图像组在所述一路直播码流中的切分位置,包括:
23.计算所述索引号与标准图像组时长的乘积,得到所述任意一个图像组在所述编码生产虚拟时间轴上的标准编码时间偏移;
24.获取所述标准编码时间偏移除以预设的切片周期时长所得的商值和余数值;
25.基于所述商值确定所述任意一个图像组所属的切片的序号、以及基于所述余数值确定所述任意一个图像组在所述所属的切片中的位置;
26.将所述切片的序号和在所述所属的切片中的位置,作为所述切分位置。
27.可选地,基于所述起始基准时间和所述时间戳偏移,确定所述任意一个图像组的音频播放时间和视频播放时间,包括:
28.计算所述起始基准时间和所述时间戳偏移之和,得到所述任意一个图像组中首个视频帧在所述编码生产虚拟时间轴上的时间偏移量;
29.对于所述任意一个图像组中的每个视频帧,采用所述时间偏移量,分别修正所述每个视频帧的视频编码时间戳和视频显示时间戳,得到与所述视频编码时间戳对应的修正后视频编码时间戳、以及与所述视频显示时间戳对应的修正后视频显示时间戳;以及,采用所述时间偏移量,分别修正所述每个音频帧的音频编码时间戳和音频显示时间戳,得到与所述音频编码时间戳对应的修正后音频编码时间戳、以及与所述音频显示时间戳对应的修正后音频显示时间戳;
30.将所述修正后视频编码时间戳和所述修正后视频显示时间戳,作为所述每个视频帧的视频时间戳;以及,将所述修正后音频编码时间戳和所述修正后音频显示时间戳作为所述每个音频帧的音频时间戳;
31.将所述任意一个图像组中所有视频帧的视频时间戳所指示的播放时间,作为所述任意一个图像组的视频播放时间;以及,将所述任意一个图像组中所有音频帧的音频时间
戳所指示的播放时间,作为所述任意一个图像组的音频播放时间。
32.可选地,对于所述任意一个图像组中的每个视频帧,采用所述时间偏移量,分别修正所述每个视频帧的视频编码时间戳和视频显示时间戳,得到与所述视频编码时间戳对应的修正后视频编码时间戳、以及与所述视频显示时间戳对应的修正后视频显示时间戳,包括:
33.计算所述每个视频帧的视频编码时间戳和所述时间偏移量之和,得到第一求和结果;以及,计算所述每个视频帧的视频显示时间和所述时间偏移量之和,得到第二求和结果;
34.将所述第一求和结果作为所述修正后视频编码时间戳,以及,将所述第二求和结果作为所述修正后视频显示时间戳。
35.可选地,采用所述时间偏移量,分别修正所述每个音频帧的音频编码时间戳和音频显示时间戳,得到与所述音频编码时间戳对应的修正后音频编码时间戳、以及与所述音频显示时间戳对应的修正后音频显示时间戳,包括:
36.计算所述每个音频帧的音频编码时间戳和所述时间偏移量之和,得到第一求和结果;以及,计算所述每个音频帧的音频显示时间和所述时间偏移量之和,得到第二求和结果;
37.将所述第一求和结果作为所述修正后音频编码时间戳,以及,将所述第二求和结果作为所述修正后音频显示时间戳。
38.第三方面,提供一种视频编码装置,包括:
39.第一获取模块,用于对于n路直播码流中的任意一路直播码流,获取所述任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;所述起始基准时间为所述n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻;
40.计算模块,用于基于所述编码时刻、所述标准索引号和所述起始基准时间,计算所述任意一个图像组的编码延时;
41.更新模块,用于按照所述编码延时更新所述标准索引号,得到所述任意一个图像组的索引号;当所述编码延时大于标准图像组时长时,所述索引号大于所述标准索引号。
42.第四方面,提供一种视频对齐装置,包括:
43.第二获取模块,用于获取一路直播码流中的任意一个图像组;
44.解析模块,用于解析所述任意一个图像组,获取所述任意一个图像组的对齐参数,所述对齐参数包括起始基准时间、所述任意一个图像组的索引号和所述任意一个图像组中首个视频帧的时间戳偏移,所述起始基准时间为所述n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,所述任意一个图像组的索引号与所述任意一个图像组的编码延时相关;所述时间戳偏移为所述首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,所述目标图像组为对所述任意一个图像组进行切片的切片任务启动时处理的第一个图像组;
45.第一确定模块,用于按照所述任意一个图像组的索引号,确定所述任意一个图像组在所述一路直播码流中的切分位置;
46.第二确定模块,用于基于所述起始基准时间和所述时间戳偏移,确定所述任意一个图像组的音频播放时间和视频播放时间。
47.第五方面,提供一种视频对齐系统,包括:
48.编码服务器和切片服务器;
49.所述编码服务器用于对于n路直播码流中的任意一路直播码流,获取所述任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;所述起始基准时间为所述n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻;基于所述编码时刻、所述标准索引号和所述起始基准时间,计算所述任意一个图像组的编码延时;按照所述编码延时更新所述标准索引号,得到所述任意一个图像组的索引号;当所述编码延时大于标准图像组时长时,所述索引号大于所述标准索引号;
50.所述切片服务器用于获取一路直播码流中的任意一个图像组;解析所述任意一个图像组,获取所述任意一个图像组的对齐参数,所述对齐参数包括起始基准时间、所述任意一个图像组的索引号和所述任意一个图像组中首个视频帧的时间戳偏移,所述起始基准时间为所述n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,所述任意一个图像组的索引号与所述任意一个图像组的编码延时相关;所述时间戳偏移为所述首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,所述目标图像组为对所述任意一个图像组进行切片的切片任务启动时处理的第一个图像组;按照所述任意一个图像组的索引号,确定所述任意一个图像组在所述一路直播码流中的切分位置;基于所述起始基准时间和所述时间戳偏移,确定所述任意一个图像组的音频播放时间和视频播放时间。
51.第六方面,提供一种电子设备,其特征在于,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
52.所述存储器,用于存储计算机程序;
53.所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的视频编码方法或第二方面所述的视频对齐方法。
54.第七方面,提供一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现第一方面所述的视频编码方法或第二方面所述的视频对齐方法。
55.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:本技术实施例提供的该方法,由于在编码的过程中,基于图像组的编码延时校正了图像组的标准索引号,并且使得校正后的索引号大于标准索引号,所以当生成切片时,可以基于校正后的索引号追齐编码延时,从而避免出现播放端按照标准帧率下的时间到生成服务器上下载切片的时候,相应的切片还没被生产出来,导致直播云端产生切片生产延时的问题,以此精准实现在直播场景下,对不同清晰度的直播码流的对齐。
附图说明
56.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
57.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
58.图1为本技术实施例中视频编码方法的流程示意图;
59.图2为本技术实施例中视频对齐方法的流程示意图;
60.图3为本技术实施例中视频编码装置的结构示意图;
61.图4为本技术实施例中视频对齐装置的结构示意图;
62.图5为本技术实施例中视频对齐系统的结构示意图;
63.图6为本技术实施例中电子设备的结构示意图。
具体实施方式
64.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
65.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
66.相关技术中,通常按照直播转码的信号源流为标准的等帧率进行切片对齐,然而测试观察发现,切片对齐的生产方法在理想情况下表现正常。但是,当直播转码的信号源流不是按照标准的等帧率进行转码时,对于播放端来说会产生播放下载延时。
67.比如,在标准帧率下,对于2s的图像组(gop),每个gop就是50帧。切片的时候是按照gop进行切片的,如果是6s的片,那么这个片就应该包含3个gop,150帧视频帧。如果帧率不足,以24.9fps为例,相当于两帧视频帧之间的时间差略大于1000/25=40ms。在进行切片时,由于每个gop由50帧视频帧构成,但它的实际时长会略大于2s,进而导致每个直播切片的时长会略大于6s,这样一来,生产切片就会略微“滞后”,就是说切片生产的时间会比标准帧率下的时间略大。一个片差一点,长时间累积起来,这个偏差会越来越大。播放端按照标准帧率下的时间到生成服务器上下载切片的时候,相应的切片还没被生产出来,导致直播云端产生切片生产延时。
68.为了解决相关技术中存在的问题,本实施例提供一种视频编码方法,该方法可应用于编码服务器;
69.如图1所示,该方法可以包括以下步骤:
70.步骤101、对于n路直播码流中的任意一路直播码流,获取任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻。
71.应理解,n路直播码流中为编码服务器对同一信号源流进行转码得到的清晰度彼此不同的多路直播码流。每一路直播码流由多个gop组成。
72.本实施例中,任意一个图像组的编码时刻为编码服务器实际编码得到任意一个图像组的时刻。应理解,当视频帧的时间间隔不稳定导致信号源流的帧率小于标准帧率时,任
意一图像组的编码时刻晚于标准帧率下该图像组的编码时刻。
73.应理解,本实施例中,任意一个图像组的标准索引号为当信号源流的帧率为标准帧率时,所确定的该图像组的索引号。相应地,标准索引号指示了当信号源流的帧率为标准帧率时,该图像组被编码的编码次序。比如,当图像组的标准索引号为2时,表示该图像组为其所属的直播码流中第二个被编码完成的图像组。
74.应用中,编码服务器可以同步开启n路直播码流的编码,也可以先后开启n路直播码流的编码。本实施例中,为了实现多路直播码流的对齐,以n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻作为起始基准时间,也就是说,对于n路直播码流中的各路直播码流,认为各路直播码流均是从该首帧视频帧进行编码,并且首帧视频帧编码完成的时刻均为该编码完成时刻。
75.本实施例中,编码生产虚拟时间轴与编码服务器本地的时间保持一致,也就是说,编码生产虚拟时间轴上的时间实际上就是编码服务器本地的时间。
76.步骤102、基于编码时刻、标准索引号和起始基准时间,计算任意一个图像组的编码延时。
77.应理解,编码延时指示,相对于标准帧率的信号源流,任意一个图像组被延迟编码完成的时间。
78.一个可选实施例中,编码延时的具体计算过程可以包括:计算标准索引号与标准图像组时长的乘积,得到任意一个图像组在编码生产虚拟时间轴上的编码时刻偏移;计算编码时刻偏移和起始基准时间之和,得到求和结果;计算编码时刻与求和结果之差,得到编码延时。
79.应理解,标准图像组时长为,假定信号源流的帧率为标准帧率时,预设的一个图像组的时长。比如当标准帧率为25fps、一个图像组包括50个视频帧时,那么标准图像组时长可以为(1/25fps)*50=2s。
80.应用中,每个图像组由一个关键帧和多个非关键帧组成。关键帧通常为该图像组中的首帧。图像组的索引号由关键帧携带。所以本实施例中的编码时刻偏移指示任意一个图像组的首帧视频帧编码晚于n路直播码流中首帧视频帧的时间。
81.应用中,编码服务器对信号源流进行转码时,都是按照一个个的gop进行转码的,在转码的过程中,转码服务器会将索引号作为参数信息封装成sei数据单元,并将sei数据单元附着在图像组的关键帧中。应理解,sei是h265/h264视频编码标准中定义的一种用于信息传递的数据单元。
82.应理解,基于编码时刻偏移和起始基准时间计算得到的求和结果,表示假定信号源流的帧率为标准帧率时,该任意一个图像组被编码的时刻。
83.本实施例中,计算编码延时所采用的公式如下所示:
84.delay=current_ntp_time

(start_ntp_time+gop_index*gop_time)
85.其中,delay为编码延时,current_ntp_time为编码时刻,start_ntp_time为起始基准时间,gop_index为任意图像组的标准索引号,gop_time为标准图像组时长。
86.步骤103、按照编码延时更新标准索引号,得到任意一个图像组的索引号,当编码延时大于标准图像组时长时,索引号大于标准索引号。
87.本实施例采用增大索引号的方式追齐编码延时。具体实现时,基于编码延时与标
准图像组时长的相对关系,确定标准索引号的更新大小。
88.一个可选实施例中,判断编码延时是否大于n个标准图像组时长;若大于n个标准图像组时长,确定任意一个图像组的索引号为标准索引号加n;若不大于n个标准图像组时长,更新n=n-1,返回执行判断编码延时是否大于n个标准图像组时长的步骤,直至n更新为1时,若编码延时大于1个标准图像组时长,则确定任意一个图像组的索引号为标准索引号加1,若编码延时不大于1个标准图像组时长,确定任意一个图像组的索引号为标准索引号。
89.实际应用中,为了及时抵消编码延时,避免跳切片的现象产生,可以优选设置n为1。
90.本实施例提供的技术方案中,由于在编码的过程中,基于图像组的编码延时校正了图像组的标准索引号,并且使得校正后的索引号大于标准索引号,所以当生成切片时,可以基于校正后的索引号追齐编码延时,从而避免出现播放端按照标准帧率下的时间到生成服务器上下载切片的时候,相应的切片还没被生产出来,导致直播云端产生切片生产延时的问题,以此精准实现在直播场景下,对不同清晰度的直播码流的对齐。
91.本实施例提供一种视频对齐方法,该方法可应用于切片服务器。应理解,不同清晰度的直播码流可以在同一个进程的不同线程中进行切片,此时不同清晰度的直播码流在同一个切片服务器中进行切片;当然不同清晰度的直播码流也可以在不同的切片服务器中进行切片,本实施例对此不作具体限定。
92.如图2所示,该方法可以包括以下步骤:
93.步骤201、获取一路直播码流中的任意一个图像组;
94.步骤202、解析任意一个图像组,获取任意一个图像组的对齐参数,对齐参数包括起始基准时间、任意一个图像组的索引号和任意一个图像组中首个视频帧的时间戳偏移,起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,任意一个图像组的索引号与任意一个图像组的编码延时相关;时间戳偏移为首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,目标图像组为对任意一个图像组进行切片的切片任务启动时处理的第一个图像组;
95.步骤203、按照任意一个图像组的索引号,确定任意一个图像组在一路直播码流中的切分位置;
96.步骤204、基于起始基准时间和时间戳偏移,确定任意一个图像组的音频播放时间和视频播放时间。
97.应用中,切片服务器可以从编码服务器或中转服务器上拉流,以获取一路直播码流中的任意一个图像组。当切片从中转服务器上拉流时,编码服务器对信号源流进行转码后,将转码的结果上传至中转服务器,以便切片服务器从中转服务器上拉流。
98.应理解,切片服务器可以对一路直播码流或多路直播码流进行切片处理,得到满足hls直播规则的切片数据。当切片服务器对多路直播码流进行切片处理时,由切片服务器中不同的进程或由同一进程中的不同线程分别对不同的直播码流进行切片处理。
99.本实施例中,切片服务器以gop(图像组)为最小单位对直播码流进行切片处理。为了实现不同路直播码流的数据对齐,同时避免对播放端产生下载延时,n路直播码流中的每路直播码流中的每个图像组都携索引号(gop_index),以便切片服务器在拉取gop后,能够基于gop的索引号确定gop的切分位置。应理解,由于图像组中携带的gop_index与该图像组
在编码服务器侧的编码延时相关,所以基于该gop_index对图像组进行数据对齐时,可以在切片的过程中消除编码延时所带来的“切片生产延时”的问题。
100.具体实现时,一个可选实施例中,计算索引号与标准图像组时长的乘积,得到任意一个图像组在编码生产虚拟时间轴上的标准编码时间偏移;获取标准编码时间偏移除以预设的切片周期时长所得的商值和余数值;基于商值确定任意一个图像组所属的切片的序号、以及基于余数值确定任意一个图像组在所属的切片中的位置;将切片的序号和在所属的切片中的位置,作为切分位置。
101.应理解,这里的标准图像组时长指的是当信号源流的帧率为标准帧率时,一个图像组的时长。比如,标准帧率为25fps,对于50帧视频帧构成的一个图像组来说,标准图像组时长就应该为(1/25fps)*50=2s。这里需要说明的是,信号源流通常携带帧率,携带的帧率即为标准帧率,而基于实际应用的各种不确定因素,信号源流往往不是按照携带的标准帧率传输,两帧视频帧之间的时间差会略大于1/25fps=40ms。
102.应用中,为了提高视频数据的对齐效率,切片服务器在下载到第一个gop后,计算第一个gop的标准图像组时长(gop_time),并将第一个gop进行缓存。当需要获取标准图像组时长时,获取第一个gop的gop_time,并将第一个gop的gop_time作为标注图像组时长。应理解,这里的第一gop指的是切片服务器启动后所下载的第一个gop,在切片服务器未出现故障的情况下,第一gop的gop_index=0,而如果切片服务器在拉流并切片的过程中出现故障并进行了重启,这里的第一gop的gop_index则不一定为0。
103.本实施例中,切片周期时长反映了切分规律。切片周期时长为切片时长与标准图像组时长的最小公倍数。例如,切片时长segment_time为5s,gop_time为2s,那么切片周期时长为5*2=10s。
104.本实施例中,切片时长为人为根据业务需要预先设置的。比如可以设置切片时长为5s或者6s,等等。不同路(不同清晰度)切片的切片时长是一样的。
105.以切片时长为5s,gop_time为2s为例,说明切片周期时长反映的切分规律。由于每个切片所包含的gop必须是完整的gop,所以在这个例子中,只能保证一个切片周期中切片的平均时间为5s。进一步地所得到的切分规律可以为6s,4s,6s,4s,其中6s的片包含3个gop,4s的片包含2个gop,第一个6s的切片和4s的切片构成第一个切片周期,第二个6s的切片和4s的切片构成第二个切片周期。
106.本实施例中,由于在任意一个图像组的编码延时大于标准图像组时,增大了任意一个图像组的标准索引号,所以这种情况下,任意一个图像组的索引号相对于相邻的上一个图像组的索引号会出现跳变。因此在基于索引号确定切分位置时,某些切片会缺少图像组。
107.一个例子中,设定segment_time=6s,gop_time=2s,segment_time和gop_time的最小公倍数为6s,所以可以确定切片周期时长为6s。
108.第一种情况,一路直播码流包括5个图像组,且这5个图像组的索引号分为0、2、3、4、5,按照上述确定切分位置的计算方式,以索引号为2来说,gop_time*gop_index=2s*2s=4s,4s/6s=商值为0,基于商值和余数确定是第1个切片(前边有0个切片周期),4s/6s=余数为4,基于余数确定是第1个切片的第3(4/2+1)个图像组,同理可以确定索引号为0的图像组为第一个切片的1个图像组,索引号为3的图像组为第二个切片的第1个图像组,索引号
为4的图像组为第二个切片的2个图像组,索引号为5的图像组为第二个切片的3个图像组。
109.也就是说,在这种情况下,跳变后的gop2仍然属于第一个切片,第一个切片缺少中间的gop。
110.第二种情况,一路直播码流包括的5个图像组的索引号分别为0、1、3、4、5,在这种情况下,索引号为3的图像组为发生跳变的图像组,按照上述确定切分位置的计算方式可知,此图像组属于第二个切片的首个切片,所以第一个切片缺少一个gop,即缺少最后一个gop。
111.第三种情况,一路直播码流包括的5个图像组的索引号分别为0、1、2、4、5,在这种情况下,gop4为发生跳变的图像组,按照上述确定切分位置的计算方式可知,此图像组属于第二个切片的第二个切片,所以第二个切片缺少一个gop,即缺少第一个gop。
112.本实施例中,通过索引号发生跳变的图像组可以达到追延时的效果。以前述的第三种情况为例,按照编码服务器侧追延时跳gop,gop index从2跳到了4,没有3;那切片侧就把4,5组成一个片,也就是第2个片只有2个gop了。之所以第二个切片只有两个gop,是因为gop0、gop1和gop2产生了延时,每个gop的图像组时长实际比标准图像组时长(2s)略大,导致第一个切片的总时长也要比6s大,所以随着编码服务器侧检测到delay,gop_index跳变,导致第2个片只有2个gop的效果(可能比4s大一点,但要比6s小),从而把延时补偿回来。
113.也就是说,当检测到时gop index+1跳变了,这附近必然有一个切片会少一个gop,就是把之前的片稍微delay的时间,用一个片缺gop的形式补偿回来。
114.本实施例中,由于gop_index基于统一的编码生产虚拟时间轴,而根据gop_time和segment_time确定的切分规律也具备跨任务一致性;所以能够保证多路切片数据对齐。即使一进多出编码任务中断或某路切片任务中断,重启后依然可以根据数据流中携带的gop_index定位到切分位置。并且,由于图像组的索引号考虑了编码延时,所以能够实现在保证多路切片数据对齐的基础上,避免切片生成延时的产生。
115.本实施例中,视频数据的对齐除了包括对任意一个图像组进行切片的对齐外,还需要校正任意一个图像组中视频播放时间和音频播放时间,以下展开说明。
116.一个可选实施例中,计算起始基准时间和时间戳偏移之和,得到任意一个图像组中首个视频帧在编码生产虚拟时间轴上的时间偏移量;对于任意一个图像组中的每个视频帧,采用时间偏移量,分别修正每个视频帧的视频编码时间戳和视频显示时间戳,得到与视频编码时间戳对应的修正后视频编码时间戳、以及与视频显示时间戳对应的修正后视频显示时间戳;以及,采用时间偏移量,分别修正每个音频帧的音频编码时间戳和音频显示时间戳,得到与音频编码时间戳对应的修正后音频编码时间戳、以及与音频显示时间戳对应的修正后音频显示时间戳;将修正后视频编码时间戳和修正后视频显示时间戳,作为每个视频帧的视频时间戳;以及,将修正后音频编码时间戳和修正后音频显示时间戳作为每个音频帧的音频时间戳;将任意一个图像组中所有视频帧的视频时间戳所指示的播放时间,作为任意一个图像组的视频播放时间;以及,将任意一个图像组中所有音频帧的音频时间戳所指示的播放时间,作为任意一个图像组的音频播放时间。
117.本实施例中计算时间偏移量的公式可以为:
118.video_ts_offset=start_ntp_time+first_gop_dts_drift;
119.其中,video_ts_offset为任意一个图像组中首个视频帧在编码生产虚拟时间轴
上的时间偏移量,start_ntp_time为起始基准时间,first_gop_dts_drift为时间戳偏移。
120.本实施例中,采用时间偏移量分别修正每个视频帧的视频编码时间戳和视频显示时间戳的计算公式可以为:
121.video_packet_dts’=video_packet_dts+video_ts_offset;
122.video_packet_pts’=video_packet_pts+video_ts_offset;
123.其中,video_packet_dts为视频编码时间戳,video_packet_pts为视频显示时间戳,video_packet_dts’为修正后视频编码时间戳,video_packet_pts’为修正后视频显示时间戳。
124.应理解,video_packet_dts、video_packet_pts这两个值是切片服务器拉流时,各路直播码流数据自己的视频编码时间戳和视频显示时间戳,是切片服务器拉流时自动获取的。
125.本实施例,通过把视频帧的视频时间戳转换到统一的编码生产时间轴,保证了多路切片视频时间戳的对齐。
126.本实施例中,采用时间偏移量分别修正每个视频帧的视频编码时间戳和视频显示时间戳的计算公式可以为:
127.audio_packet_dts’=audio_packet_dts+video_ts_offset
128.audio_packet_pts’=audio_packet_dts+video_ts_offset
129.其中,audio_packet_dts为音频编码时间戳,audio_packet_dts为音频显示时间戳,audio_packet_dts’为修正后音频编码时间戳,audio_packet_pts’为修正后音频显示时间戳。
130.应理解,audio_packet_dts、audio_packet_dts这两个值是切片服务器拉流时,各路直播码流数据自己的音频编码时间戳和音频显示时间戳,是切片服务器拉流时自动获取的。
131.本实施例,通过把音频帧的音频时间戳转换到统一的编码生产时间轴,保证了多路切片音频时间戳的对齐。
132.本技术实施例提供的技术方案中,基于任意一个图像组中的对齐参数确定任意一个图像组的切分位置、在所属的一路直播码流中的音频播放时间和视频播放时间,从而实现对视频数据的对齐。由于以编码服务器上的编码生产虚拟时间轴作为切分位置和时间戳生产的基础,并且任意一个图像组中携带索引号,所以,当转码或任何一路切片任务中断启动时,无论何时启动切片,都可以实时感知任意一个图像组在转码生产虚拟时间轴上的位置,从而多路同步地确定切分位置并修正时间戳,具备强鲁棒性和抗干扰性。同时,由于任意一个图像组的索引号与编码延时相关,因此能够实现在保证多路切片数据对齐的基础上,避免切片生成延时的产生。
133.本实施例将可以将转码和多路切片分布在不同服务器上,任务部署更灵活,例如可以将编码数据生产rtmp流,然后将rtmp服务器作为中转服务器拉流,再进行多路切片生产,同时得到rtmp数据流和hls切片数据流,以减少任务数和节省计算资源。
134.本实施例以跨任务切片对齐为基础,结合自适应码率技术,可以在hls切片直播场景下通过自动码率调节优化视频播放卡顿。
135.本实施例以跨任务切片对齐为基础,可以衍生改造实现源流切片和个性化广告切
片对齐的服务端广告插入技术(ssai)。
136.本实施例跨任务切片对齐可以保证切片数据实在有效,在编码效率不够等情形下通过填补数据等途径优化播放卡顿。
137.基于同一构思,本技术实施例中提供了一种视频编码装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图3所示,该装置主要包括:
138.第一获取模块301,用于对于n路直播码流中的任意一路直播码流,获取任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻;
139.计算模块302,用于基于编码时刻、标准索引号和起始基准时间,计算任意一个图像组的编码延时;
140.更新模块303,用于按照编码延时更新标准索引号,得到任意一个图像组的索引号;当编码延时大于标准图像组时长时,索引号大于标准索引号。
141.计算模块302用于:
142.计算标准索引号与标准图像组时长的乘积,得到任意一个图像组在编码生产虚拟时间轴上的编码时刻偏移;
143.计算编码时刻偏移和起始基准时间之和,得到求和结果;
144.计算编码时刻与求和结果之差,得到编码延时。
145.更新模块303用于:
146.判断所述编码延时是否大于n个标准图像组时长;
147.若大于所述n个标准图像组时长,确定所述任意一个图像组的索引号为所述标准索引号加n;
148.若不大于所述n个标准图像组时长,更新n=n-1,返回执行判断所述编码延时是否大于n个标准图像组时长的步骤,直至n更新为1时,若所述编码延时大于1个标准图像组时长,则确定所述任意一个图像组的索引号为所述标准索引号加1,若所述编码延时不大于1个标准图像组时长,确定所述任意一个图像组的索引号为标准索引号。
149.基于同一构思,本技术实施例中提供了一种视频对齐装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图4所示,该装置主要包括:
150.第二获取模块401,用于获取一路直播码流中的任意一个图像组;
151.解析模块402,用于解析任意一个图像组,获取任意一个图像组的对齐参数,对齐参数包括起始基准时间、任意一个图像组的索引号和任意一个图像组中首个视频帧的时间戳偏移,起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,任意一个图像组的索引号与任意一个图像组的编码延时相关;时间戳偏移为首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,目标图像组为对任意一个图像组进行切片的切片任务启动时处理的第一个图像组;
152.第一确定模块403,用于按照任意一个图像组的索引号,确定任意一个图像组在一路直播码流中的切分位置;
153.第二确定模块404,用于基于起始基准时间和时间戳偏移,确定任意一个图像组的音频播放时间和视频播放时间。
154.第一确定模块403用于:
155.计算索引号与标准图像组时长的乘积,得到任意一个图像组在编码生产虚拟时间轴上的标准编码时间偏移;
156.获取标准编码时间偏移除以预设的切片周期时长所得的商值和余数值;
157.基于商值确定任意一个图像组所属的切片的序号、以及基于余数值确定任意一个图像组在所属的切片中的位置;
158.将切片的序号和在所属的切片中的位置,作为切分位置。
159.第二确定模块404用于:
160.计算起始基准时间和时间戳偏移之和,得到任意一个图像组中首个视频帧在编码生产虚拟时间轴上的时间偏移量;
161.对于任意一个图像组中的每个视频帧,采用时间偏移量,分别修正每个视频帧的视频编码时间戳和视频显示时间戳,得到与视频编码时间戳对应的修正后视频编码时间戳、以及与视频显示时间戳对应的修正后视频显示时间戳;以及,采用时间偏移量,分别修正每个音频帧的音频编码时间戳和音频显示时间戳,得到与音频编码时间戳对应的修正后音频编码时间戳、以及与音频显示时间戳对应的修正后音频显示时间戳;
162.将修正后视频编码时间戳和修正后视频显示时间戳,作为每个视频帧的视频时间戳;以及,将修正后音频编码时间戳和修正后音频显示时间戳作为每个音频帧的音频时间戳;
163.将任意一个图像组中所有视频帧的视频时间戳所指示的播放时间,作为任意一个图像组的视频播放时间;以及,将任意一个图像组中所有音频帧的音频时间戳所指示的播放时间,作为任意一个图像组的音频播放时间。
164.第二确定模块404用于:
165.计算每个视频帧的视频编码时间戳和时间偏移量之和,得到第一求和结果;以及,计算每个视频帧的视频显示时间和时间偏移量之和,得到第二求和结果;
166.将第一求和结果作为修正后视频编码时间戳,以及,将第二求和结果作为修正后视频显示时间戳。
167.第二确定模块404用于:
168.计算每个音频帧的音频编码时间戳和时间偏移量之和,得到第一求和结果;以及,计算每个音频帧的音频显示时间和时间偏移量之和,得到第二求和结果;
169.将第一求和结果作为修正后音频编码时间戳,以及,将第二求和结果作为修正后音频显示时间戳。
170.基于同一构思,本技术实施例中提供了一种视频对齐系统,该系统的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图5所示,该系统主要包括:
171.编码服务器501和切片服务器502;
172.编码服务器501用于对于n路直播码流中的任意一路直播码流,获取任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻;基于编码时刻、标准索引号和起始基准时间,计算任意一个图像组的编码延时;按照编码延时更新标准索引号,得到任意一个图像组的索引号;当编码延时大于标准图像组时长时,索引号大于标准索引号;
173.切片服务器502用于获取一路直播码流中的任意一个图像组;解析任意一个图像
组,获取任意一个图像组的对齐参数,对齐参数包括起始基准时间、任意一个图像组的索引号和任意一个图像组中首个视频帧的时间戳偏移,起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,任意一个图像组的索引号与任意一个图像组的编码延时相关;时间戳偏移为首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,目标图像组为对任意一个图像组进行切片的切片任务启动时处理的第一个图像组;按照任意一个图像组的索引号,确定任意一个图像组在一路直播码流中的切分位置;基于起始基准时间和时间戳偏移,确定任意一个图像组的音频播放时间和视频播放时间。
174.基于同一构思,本技术实施例中还提供了一种电子设备,如图6所示,该电子设备主要包括:处理器601、存储器602和通信总线603,其中,处理器601和存储器602通过通信总线603完成相互间的通信。其中,存储器602中存储有可被处理器601执行的程序,处理器601执行存储器602中存储的程序,实现如下步骤:
175.对于n路直播码流中的任意一路直播码流,获取任意一路直播码流中的任意一个图像组的编码时刻、标准索引号和起始基准时间;起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻;基于编码时刻、标准索引号和起始基准时间,计算任意一个图像组的编码延时;按照编码延时更新标准索引号,得到任意一个图像组的索引号;当编码延时大于标准图像组时长时,索引号大于标准索引号;
176.或,
177.获取一路直播码流中的任意一个图像组;解析任意一个图像组,获取任意一个图像组的对齐参数,对齐参数包括起始基准时间、任意一个图像组的索引号和任意一个图像组中首个视频帧的时间戳偏移,起始基准时间为n路直播码流中首帧视频帧在编码生产虚拟时间轴上的编码完成时刻,任意一个图像组的索引号与任意一个图像组的编码延时相关;时间戳偏移为首个视频帧相对于目标图像组中的首个视频帧的编码时间戳的偏移,目标图像组为对任意一个图像组进行切片的切片任务启动时处理的第一个图像组;按照任意一个图像组的索引号,确定任意一个图像组在一路直播码流中的切分位置;基于起始基准时间和时间戳偏移,确定任意一个图像组的音频播放时间和视频播放时间。
178.上述电子设备中提到的通信总线603可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线603可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
179.存储器602可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器601的存储装置。
180.上述的处理器601可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等,还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
181.在本技术的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存
储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的视频编码方法或视频对齐方法。
182.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。该计算机可以时通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如dvd)或者半导体介质(例如固态硬盘)等。
183.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
184.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1