TS流时间同步信息插入方法、装置、设备及可读存储介质与流程

文档序号:33629281发布日期:2023-03-28 22:18阅读:80来源:国知局
TS流时间同步信息插入方法、装置、设备及可读存储介质与流程
ts流时间同步信息插入方法、装置、设备及可读存储介质
技术领域
1.本发明属于帧同步技术领域,尤其涉及一种ts流时间同步信息插入方法、装置、设备及可读存储介质。


背景技术:

2.在使用hevc编码码流(hevc编码的二进制流数据)的行业中,通过插入时间同步信息(sei字段,hevc编码协议中的二进制字段,该字段开放给用户用于自定义信息的插入)来实现帧同步是非常普遍的,但往往插入时间同步信息的步骤是早于视频编码阶段。而如果需要对一路已经编码的hevc码流,且已经复用为ts流(transport stream,传输流)的视频流进行时间同步信息的插入,一般来说需要采取以下操作:
3.1.通过与ntp服务器的通信获得一个时间基准。
4.2.解复用ts流,得到hevc编码未经格式封装的裸流。
5.3.对hevc编码的裸流进行解码,得到画面的原始帧。
6.4.对原始帧进行重新编码,同时在编码每一帧的过程中插入包含有时间同步信息的sei字段,得到插入了时间同步信息的hevc裸流。
7.5.对包含有时间同步信息的hevc裸流进行ts流复用。
8.可见,上述插入操作存在以下弊端:
9.1.hevc码流的编码和解码需要消耗大量的时间,对于实时流来说,会增加相当多的延时,码流延时是实时流中最重要的考虑因素之一,重新编解码所带来的延时往往是难以接受的。
10.2.由于hevc复杂的编解码算法,在编解码的过程中需要消耗大量的cpu资源,在cpu资源有限的情况下,难以达到编解码所需要的性能门槛。


技术实现要素:

11.基于此,针对上述技术问题,提供一种ts流时间同步信息插入方法、装置、设备及可读存储介质。
12.本发明采用的技术方案如下:
13.作为本发明的第一方面,提供一种ts流时间同步信息插入方法,包括:
14.基于hevc码流结构,从目标视频帧的ts流中确定所述目标视频帧的画面信息的头部所在的目标ts分片;
15.在所述画面信息的头部前,将所述时间同步信息插入所述目标ts分片的载荷,并将所述目标ts分片及其后的各ts分片的载荷中的相应原信息顺次后移;
16.若所述各ts分片的最后一个ts分片中后移的有效信息未超出该ts分片,则根据该ts分片的剩余无效信息长度相应修改其头部,反之,则在所述最后一个ts分片之后增加一个新的ts分片,将后移的有效信息的超出部分填充入所述新的ts分片的载荷,在该载荷的未填满部分填充无效信息,并相应的设置所述新的ts分片的头部。
17.作为本发明的第二方面,提供一种ts流时间同步信息插入装置,包括:
18.目标ts分片确定模块,用于基于hevc码流结构,从目标视频帧的ts流中确定所述目标视频帧的画面信息的头部所在的目标ts分片;
19.信息插入模块,用于在所述画面信息的头部前,将所述时间同步信息插入所述目标ts分片的载荷,并将所述目标ts分片及其后的各ts分片的载荷中的相应原信息顺次后移;
20.若所述各ts分片的最后一个ts分片中后移的有效信息未超出该ts分片,则根据该ts分片的剩余无效信息长度相应修改其头部,反之,则在所述最后一个ts分片之后增加一个新的ts分片,将后移的有效信息的超出部分填充入所述新的ts分片的载荷,在该载荷的未填满部分填充无效信息,并相应的设置所述新的ts分片的头部。
21.作为本发明的第三方面,提供一种电子设备,包括存储模块,所述存储模块包括由处理器加载并执行的指令,所述指令在被执行时使所述处理器执行上述第一方面的一种ts流时间同步信息插入方法。
22.作为本发明的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现上述第一方面的一种ts流时间同步信息插入方法。
23.本发明不需要对码流进行编解码,在不拆解上层ts分片的情况下,直接对ts分片中所包含的底层hevc码流结构进行操作,并使用内存操作的方式实现在ts流中插入时间同步信息,同时,不需要完整解析获取ts分片头部所有字段的信息,效率高,节省了时间开销,码流延时低,不需要消耗大量cpu资源,适用面广。
附图说明
24.下面结合附图和具体实施方式对本发明进行详细说明:
25.图1为本发明实施例提供的一种ts流时间同步信息插入方法的流程图;
26.图2为本发明实施例应用的系统的示意图;
27.图3为本发明实施例提供的一种ts流时间同步信息插入装置的示意图;
28.图4为本发明实施例提供的一种电子设备的示意图;
29.图5为ts流的格式示意图;
30.图6为hevc编码协议规定的sei字段的位置示意图。
具体实施方式
31.以下将结合说明书附图对本发明的实施方式予以说明。需要说明的是,本说明书中所涉及的实施方式不是穷尽的,不代表本发明的唯一实施方式。以下相应的实施例只是为了清楚的说明本发明专利的发明内容,并非对其实施方式的限定。对于该领域的普通技术人员来说,在该实施例说明的基础上还可以做出不同形式的变化和改动,凡是属于本发明的技术构思和发明内容并且显而易见的变化或变动也在本发明的保护范围之内。
32.图2示出了本发明实施例应用的系统。该系统可以包括多台处理主机110以及导播台服务器120,不同摄像机拍摄的视频由对应的处理主机110进行hevc编码、封装、复用,形成ts流,在ts流中插入时间同步信息后传输给导播台服务器120,导播台服务器120汇总各
路ts流,根据时间同步信息进行帧同步,由于不同摄像机拍摄的画面在编码和传输等过程中会带来时间误差,故需要在时间上进行同步。
33.如图1所示,本发明实施例提供一种ts流时间同步信息插入方法,其具体流程如下:
34.s101、基于hevc码流结构,从目标视频帧的ts流中确定目标视频帧的画面信息的头部所在的目标ts分片。
35.其中,一个ts分片的容量为188字节,一个视频帧的数据远远大于188字节,故经复用后一帧数据被拆分成多个ts分片,每一个ts分片均具有头部(也可称为首部,header)和载荷(也可称为负载,payload),头部为4个字节,如图5所示,包含固定字节(同步字节,0x47)、pid(每一路视频流或音频流的唯一标识)、载荷是否含有适应字段的标识(适应字段控制)、适应字段长度以及用于检测分片顺序的连续计数器等等。
36.考虑到目标视频帧的ts流中可能存在其它ts分片(如音频帧的分片等等),且这些分片可能被分散插在了视频帧的ts分片之间,故需要解析ts流中每个ts分片的头部,获得每个ts分片的pid,通过pid对ts流进行过滤,即将上述其它ts分片过滤。
37.在本实施例中,步骤s101进一步包括:
38.1、由前至后遍历ts流中的每个ts分片。
39.2、在遍历到的当前ts分片的载荷中寻找承载画面信息的nal单元。
40.3、若寻找到承载画面信息的nal单元,遍历停止,将当前ts分片作为目标ts分片。
41.需要指出的是,编码后的视频帧经过封装形成pes包,pes包包含头部信息以及hevc码流结构,hevc码流结构由多个nal单元构成,如承载sps的nal单元、承载pps的nal单元、承载画面信息(srap picture)的nal单元,而将pes包进行复用后形成ts流,相当于将pes包拆分至多个ts分片,每一个新的视频帧开始时,在该帧第一个ts分片头部都会有标记(有效载荷单元起始指示符),找到带有标记的ts分片意味着从当前ts分片开始,将有一个完整的pes包到来,因此,通过由前至后遍历ts流中的每个ts分片,可以找到承载画面信息的nal单元,相当于找到了目标视频帧的画面信息的头部,如图6所示,在码流结构中时间同步信息(sei字段)的插入位置由hevc编码协议规定,需要在画面信息之前,那么找到了目标视频帧的画面信息的头部时,当前所遍历到的ts分片就是目标ts分片。
42.s102、在画面信息的头部前,将时间同步信息插入目标ts分片的载荷,并将目标ts分片及其后的各ts分片的载荷中的相应原信息顺次后移,由于各分片载荷中的信息均保存在内存中,故对信息顺次后移是使用内存操作的方式实现的。
43.其中,可以从ntp时间服务器获取标准时间,根据hevc协议生成时间同步信息(封装成sei结构)。
44.如目标ts分片为分片1,之后有2个ts分片:分片2、分片3。
45.向分片1的载荷中插入时间同步信息后,该载荷中从插入位置开始的原信息被后推,超出分片1的冗余信息(长度刚好为时间同步信息的长度)插入分片2的载荷中,同样使得该载荷中的原信息被后推,超出分片2的冗余信息再插入分片3的载荷中,完成顺次后移。
46.对于一个视频帧来说它几乎不可能刚好填满最后一个ts分片的所有字节,那么对于未填满的部分,ts传输流协议规定了可以使用0xff来作为无效信息进行填充,对于填充了无效信息的ts分片,需要在ts分片的头部进行标识(适应字段控制和适应字段长度)。基
于此,在操作上述各ts分片的最后一个ts分片时,可能会面临需要增加一个新的ts分片的问题,若最后一个ts分片中后移的有效信息(非0xff)未超出该ts分片,代表不需要增加新的分片,只需根据该ts分片的剩余无效信息长度相应修改其头部,这里有两种情况,一种是后移后有效信息恰好填满ts分片,原有的无效信息恰好被推出分片,相当于剩余无效信息长度为0,此时,需修改头部以标识该ts分片不含适应字段,另一种是后移后有效信息未填满ts分片,原有的无效信息的一部分被推出了分片,相当于剩余无效信息长度变短了,此时,需修改头部以标识该ts分片含有适应字段和更新适应字段的长度;反之,当最后一个ts分片中后移的有效信息(非0xff)超出了该ts分片,则在最后一个ts分片之后增加一个新的ts分片,将后移的有效信息的超出部分填充入新的ts分片的载荷,在该载荷的未填满部分填充无效信息(0xff),并相应的设置新的ts分片的头部:设置连续计数器的值、标识该ts分片含有适应字段、设置适应字段的长度。
47.如分片3之后新增了分片4,分片3的连续计数器的值为2,则分片3的连续计数器的值设置为3。
48.进一步地,为了保证通过网络传输的ts分片的连续性,对于连续的视频帧,各ts分片是连续计数的,故当目标视频帧的ts流中增加了一个新的ts分片,则根据该ts分片的计数值(连续计数器的值),依据计数规则(从0-15循环计数)修改目标视频帧之后各视频帧的ts分片的计数值。
49.以两个连续视频帧为例,假设前一个视频帧和后一个视频帧的ts流分别具有3个分片,6个分片的计数值分别为:012345,当前一个视频帧的ts流中增加了一个新的ts分片后,4个分片的计数值分别为:0123,则修改后一个视频帧的3个分片的计数值为:456。
50.由上可知,本实施例方法不需要对码流进行编解码,在不拆解上层ts分片的情况下,直接对ts分片中所包含的底层hevc码流结构进行操作,并使用内存操作的方式实现在ts流中插入时间同步信息,同时,不需要完整解析获取ts分片头部所有字段的信息,只需根据ts流协议,在对应的位置获取或修改与我们插入时间同步信息相关的几个关键字段(同步字节(用于验证一个ts分片的开始)、连续计数器、pid、有效载荷单元起始指示符、适应字段控制),效率高,节省了时间开销,码流延时低,不需要消耗大量cpu资源,适用面广。
51.以下将详细描述本发明的一个或多个实施例的ts流时间同步信息插入装置。本领域技术人员可以理解,这些插入装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。图3示出了本发明实施例提供的一种ts流时间同步信息插入装置,如图3所示,该插入装置包括目标ts分片确定模块11以及信息插入模块12。
52.目标ts分片确定模块11,用于基于hevc码流结构,从目标视频帧的ts流中确定目标视频帧的画面信息的头部所在的目标ts分片。
53.其中,一个ts分片的容量为188字节,一个视频帧的数据远远大于188字节,故经复用后一帧数据被拆分成多个ts分片,每一个ts分片均具有头部(也可称为首部,header)和载荷(也可称为负载,payload),头部为4个字节,如图5所示,包含固定字节(同步字节,0x47)、pid(每一路视频流或音频流的唯一标识)、载荷是否含有适应字段的标识(适应字段控制)、适应字段长度以及用于检测分片顺序的连续计数器等等。
54.考虑到目标视频帧的ts流中可能存在其它ts分片(如音频帧的分片等等),且这些分片可能被分散插在了视频帧的ts分片之间,故需要解析ts流中每个ts分片的头部,获得
每个ts分片的pid,通过pid对ts流进行过滤,即将上述其它ts分片过滤。
55.在本实施例中,目标ts分片的具体确定过程如下:
56.1、由前至后遍历ts流中的每个ts分片。
57.2、在遍历到的当前ts分片的载荷中寻找承载画面信息的nal单元。
58.3、若寻找到承载画面信息的nal单元,遍历停止,将当前ts分片作为目标ts分片。
59.需要指出的是,编码后的视频帧经过封装形成pes包,pes包包含头部信息以及hevc码流结构,hevc码流结构由多个nal单元构成,如承载sps的nal单元、承载pps的nal单元、承载画面信息(srap picture)的nal单元,而将pes包进行复用后形成ts流,相当于将pes包拆分至多个ts分片,每一个新的视频帧开始时,在该帧第一个ts分片头部都会有标记(有效载荷单元起始指示符),找到带有标记的ts分片意味着从当前ts分片开始,将有一个完整的pes包到来,因此,通过由前至后遍历ts流中的每个ts分片,可以找到承载画面信息的nal单元,相当于找到了目标视频帧的画面信息的头部,如图6所示,在码流结构中时间同步信息(sei字段)的插入位置由hevc编码协议规定,需要在画面信息之前,那么找到了目标视频帧的画面信息的头部时,当前所遍历到的ts分片就是目标ts分片。
60.信息插入模块12,用于在画面信息的头部前,将时间同步信息插入目标ts分片的载荷,并将目标ts分片及其后的各ts分片的载荷中的相应原信息顺次后移,由于各分片载荷中的信息均保存在内存中,故对信息顺次后移是使用内存操作的方式实现的。
61.其中,可以从ntp时间服务器获取标准时间,根据hevc协议生成时间同步信息(封装成sei结构)。
62.如目标ts分片为分片1,之后有2个ts分片:分片2、分片3。
63.向分片1的载荷中插入时间同步信息后,该载荷中从插入位置开始的原信息被后推,超出分片1的冗余信息(长度刚好为时间同步信息的长度)插入分片2的载荷中,同样使得该载荷中的原信息被后推,超出分片2的冗余信息再插入分片3的载荷中,完成顺次后移。
64.对于一个视频帧来说它几乎不可能刚好填满最后一个ts分片的所有字节,那么对于未填满的部分,ts传输流协议规定了可以使用0xff来作为无效信息进行填充,对于填充了无效信息的ts分片,需要在ts分片的头部进行标识(适应字段控制和适应字段长度)。基于此,在操作上述各ts分片的最后一个ts分片时,可能会面临需要增加一个新的ts分片的问题,若最后一个ts分片中后移的有效信息(非0xff)未超出该ts分片,代表不需要增加新的分片,只需根据该ts分片的剩余无效信息长度相应修改其头部,这里有两种情况,一种是后移后有效信息恰好填满ts分片,原有的无效信息恰好被推出分片,相当于剩余无效信息长度为0,此时,需修改头部以标识该ts分片不含适应字段,另一种是后移后有效信息未填满ts分片,原有的无效信息的一部分被推出了分片,相当于剩余无效信息长度变短了,此时,需修改头部以标识该ts分片含有适应字段和更新适应字段的长度;反之,当最后一个ts分片中后移的有效信息(非0xff)超出了该ts分片,则在最后一个ts分片之后增加一个新的ts分片,将后移的有效信息的超出部分填充入新的ts分片的载荷,在该载荷的未填满部分填充无效信息(0xff),并相应的设置新的ts分片的头部:设置连续计数器的值、标识该ts分片含有适应字段、设置适应字段的长度。
65.如分片3之后新增了分片4,分片3的连续计数器的值为2,则分片3的连续计数器的值设置为3。
66.进一步地,为了保证通过网络传输的ts分片的连续性,对于连续的视频帧,各ts分片是连续计数的,故当目标视频帧的ts流中增加了一个新的ts分片,则根据该ts分片的计数值(连续计数器的值),依据计数规则(从0-15循环计数)修改目标视频帧之后各视频帧的ts分片的计数值。
67.以两个连续视频帧为例,假设前一个视频帧和后一个视频帧的ts流分别具有3个分片,6个分片的计数值分别为:012345,当前一个视频帧的ts流中增加了一个新的ts分片后,4个分片的计数值分别为:0123,则修改后一个视频帧的3个分片的计数值为:456。
68.综上,上述实施例提供的ts流时间同步信息插入装置可以执行前述各实施例中提供的ts流时间同步信息插入方法。
69.与上述构思相同,上述图3所示的ts流时间同步信息插入装置的结构可实现为一电子设备,图4示出了本发明实施例提供的一种电子设备的结构示意性框图。
70.示例性的,电子设备包括存储模块21以及处理器22,存储模块21包括由处理器22加载并执行的指令,指令在被执行时使处理器22执行本说明书上述一种ts流时间同步信息插入方法部分中描述的根据本发明各种示例性实施方式的步骤。
71.应当理解的是,处理器22可以是中央处理单元(centra lprocess inguni t,cpu),该处理器22还可以是其它通用处理器、数字信号处理器
72.(digi talsignalprocessor,dsp)、专用集成电路
73.(appl icat ionspecificintegratedcircui t,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
74.本发明实施例中还提供一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,一个或多个程序当被处理器执行时,实现上述ts流时间同步信息插入方法部分中描述的根据本发明各种示例性实施方式的步骤。
75.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机可读存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
76.如本领域普通技术人员公知的,术语计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其他数据,并且
可包括任何信息递送介质。
77.示例性的,计算机可读存储介质可以是前述实施例的电子设备的内部存储单元,例如电子设备的硬盘或内存。计算机可读存储介质也可以是电子设备的外部存储设备,例如电子设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigi tal,sd)卡,闪存卡(flashcard)等。
78.前述各实施例提供的电子设备和计算机可读存储介质,不需要对码流进行编解码,在不拆解上层ts分片的情况下,直接对ts分片中所包含的底层hevc码流结构进行操作,并使用内存操作的方式实现在ts流中插入时间同步信息,同时,不需要完整解析获取ts分片头部所有字段的信息,效率高,节省了时间开销,码流延时低,不需要消耗大量cpu资源,适用面广。
79.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1