一种视频流的拼接方法和系统的制作方法
【专利摘要】本发明公开了一种视频流的拼接方法和系统。包括:解析拼接码流中的SEI消息;根据SEI消息计算拼接后码流从CPB中移出的延迟时间值,并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。本发明有效解决了拼接码流的HRD兼容一致性问题。
【专利说明】一种视频流的拼接方法和系统
【技术领域】
[0001]本发明涉及视频编解码领域,并更具体地涉及一种视频流的拼接方法和系统。
【背景技术】
[0002]随着H.264/AVC (Advanced Video Coding,高级视频编码)视频编码标准在工业界的普遍使用,与H.264/AVC相关的视频处理技术需求越来越多,其中视频流拼接处理经常被用于视频编辑、PVR (Personal VideoRecorder,个人视频录像机)、广告视频插入等应用场景。视频流拼接处理的关键技术就是视频压缩码流拼接技术。
[0003]视频压缩码流拼接操作可以简单定义为两个互相独立的视频压缩流进行的串联操作(Concatenat1n),而且要求串联后的视频压缩流与原来的视频流兼容。一般来说,视频压缩流拼接操作可以分为两类:一类是无缝拼接,另一类是非无缝拼接。引用MPEG-2系统层标准对拼接的定义说明如下。
[0004]无缝拼接不包含解码不连续(Decoding Discontinuity),拼接后的新码流第一个访问单位的解码时间与旧码流位于拼接点前的访问单位的解码时间一致。即新码流第一个访问单元的解码时间等于旧码流在保持连续情况下的后继访问单元的解码时间;非无缝拼接导致解码不连续,例如,非无缝拼接新码流的第一个访问点的解码时间比无缝拼接解码的解码时间大(或小)。在后面提到拼接操作时都是指的无缝拼接。
[0005]对于H.264/AVC视频压缩流拼接来说,最具挑战性的问题之一是如何保证拼接后的码流仍然满足H.264/AVC标准在附录C中定义的HRD (Hypothetical ReferenceDecoder,假想参考解码器)兼容一致性。HRD是属于MPEG/ITU H.264/AVC标准中规范性的一部分,任何符合该标准的压缩流都内在要求满足HRD要求。但是针对H.264/AVC标准中的HRD模型,不能保证两段HRD兼容压缩码流经过简单的剪切-粘贴操作的拼接码流也满足HRD要求。
[0006]具体来说,H.264/AVC视频流拼接导致的HRD兼容性问题包括下面三个方面:
[0007]1.拼接后的 cpb_reamoval_delay 不正确
[0008]根据HRD模型,访问单元η移出CPB (Coded Picture Buffer,编码图像缓冲区)的时刻有下述公式计算:
[0009]tr;n(n) =tr,n(nb) +tcX cpb_removal_delay (η)
[0010]其中,t,,n(n)表示设定单元η从CPB的移出时间(或时刻),之所以“设定”,表示这个时间是按HRD模型计算的时间,不是“实际”解码过程中的时间(下面用tjn)表示);
[0011]当访问单元η是当前缓冲周期的第一个单元时,、n(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr;n(nb)为当前缓冲周期的第一个访问单元的移出时刻;
[0012]tc是一个时钟记号,为H.264标准的预定义值;
[0013]cpb_removal_delay (η)为图像从CPB中移出的延迟时间值,是H.264码流中的语法兀素取值,是访问单兀η相关的图像定时SEKSupplemental Enhancement Informat1n,补充的增强信息)中规定的cpb_removal_delay值。
[0014]根据、η(η)的定义可以知道,为了设置拼接点的cpb_removal_delay,需要知道前一个缓冲周期长度。如果拼接操作只是简单地将两段H.264/AVC码流拼接起来,不考虑前一个缓冲周期长度,那么拼接点所在的存取单元的原始cpb_removal_delay将导致该存取单位CPB规定移出时间计算错误。
[0015]例如,假设有名为streaml和stream2的两段独立H.264/AVC视频码流,其中streaml包含A、B两段,stream2包含C、D两段,而且每段视频只有开始的存取单元才有缓冲周期SEI信息。stream2的D段码流的cpb_removal_delay取值本来是根据stream2的C码流来计算,但是,如果将streaml的A段和stream〗的D段简单拼接在一起,那么D段码流中的cpb_removal_delay取值需要根据streaml的A段的长度进行调整,导致计算错误,即拼接后的cpb_reamoval_delay不正确。
[0016]2.拼接后的初始dpb_output_delay不匹配
[0017]图像η从DPB (Decoded Picture Buffer,解码图像缓冲区)输出的时间计算公式如下:
[0018]t。, dpb (n) =tr (n) +tc X dpb_output_delay (n)
[0019]其中,t0jdpb(n)表示从DPB输出的时间;
[0020]tr (η)表示单元η从CPB中移出的实际时间;
[0021]H.264/AVC码流中的第一个访问单元的dpb_output_delay称为初始dpb_output_delay,可以理解为第一幅图像的显示时间。
[0022]根据HRD模型,初始dpb_output_delay的取值必须保证正常的解码和显示关系。初始dpb_output_delay的取值取决于整个序列的图像重排序关系。然而拼接后的序列的图像重排关系不同了,所以,拼接后的初始dpb_output_delay不匹配。
[0023]3.拼接后的码流违反HRD模型中定义的C_15等式和C_16等式
[0024]对于每一与缓冲周期SEI消息相关的访问单元n,n>0,有Atg,9CI(n)参数,其规定如下:
[0025]Δ?β 90 (η) =90000 X (tr,n(n) _taf (η_1))
[0026]其中,Atg,9(ι(η)是标准中的定义值,表示图像η的规定移出时间与前一副图像(n-Ι)的最终移出时间之差。这里taf(n-l)表示拼接点η前一个访问单元移出CPB的时间。
[0027]HRD模型对一个缓冲周期SEI消息内的initial_cpb_removal_delay限制如下:
[0028]如果cbr_flag[SchedSelIdx]等于 O,且
[0029]initial_cpb_removal_delay [SchedSeIIdX] ^ Ceil ( Δ tgj90 (η)) (c_15)
[0030]否则,即cbr_flag[SchedSelIdx]等于 I,
[0031]Floor (Atg90 (η)) ^ ini t ial_cpb_removal_de lay [SchedSe 11 dx] ^ Ceil (Δ tg,90(n))(c_16)
[0032]这些公式都是Η.264标准中的公式,S卩,比特流中的HRD参数必须满足的条件。其中,initial_cpb_removal_delay为SEI消息中的语法值,表示图像η从CPB中移出的初始时间值,其值采用90ΚΗζ时钟单位。拼接前的比特流中的HRD参数都是独立计算,符合原始比特流的一致性,而拼接后的比特流,如果不对参数进行调整,显然不满足上述公式。因此,对于拼接码流很容易违反上述约定。
【发明内容】
[0033]鉴于以上,本发明提出一种视频流的拼接方法和系统,以解决现有技术存在的至少一个问题。
[0034]根据本发明一方面,提出一种视频流的拼接方法,包括:解析拼接码流中的SEI消息;根据SEI消息计算拼接后码流从CPB中移出的延迟时间值,并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。
[0035]优选地,根据该SEI消息进行解码之后,进行假想参考解码器(HRD)验证,以验证HRD兼容一致性。
[0036]优选地,拼接后码流的cpb_removal_delay为:
[0037]cpb_removal_delay
[0038]= (initial_cpb_removal_delay [SchedSelldX] +90000+1^ (ns_l) _tr,n(nb)) +tc。
[0039]其中,t。是一个时钟记号;
[0040]initial_cpb_removal_delay [SchedSelldx]是与访问单兀 n 相关的缓冲周期 SEI消息中所定义的,表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟;
[0041]taf(ns-l)表示拼接点ns前一个访问单元移出CPB的时间;
[0042]当访问单元η是当前缓冲周期的第一个单元时,、n(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr;n(nb)为当前缓冲周期的第一个访问单元的移出时刻。
[0043]优选地,拼接后码流的cpb_removal_delay为:
[0044]cpb_removal_deIay=DeIayOffset=
[0045]Cei ; ((initial_cpb_removal_delay [SchedSedSelIx] +90000+taf (ns-l)_tr,n(nb)) +tc),
[0046]其中,DelayOffset为偏移量,Ceil表示向上取整。
[0047]优选地,拼接后码流的cpb_removal_delay为:
[0048]cpb_removal_delay=
[0049]Max (DelayOff set, cpb_removal_delayorig),
[0050]其中,cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的 cpb_removal_delay 值。
[0051]优选地,解析拼接码流中的SEI消息,根据SEI消息计算拼接后码流从DPB中移出的延迟时间值,并替换SEI消息中携带的从DPB中移出的延迟时间值,以根据该SEI消息进行显示,其中,SEI消息携带的从DPB中移出的延迟时间值是根据拼接前的码流得到的;其中,当插入流的dpb_output_delay小于原始流对应值,则将拼接后的码流的initial_dpb_output_delay修改为大于等于所有码流的initial_dpb_output_delay ;当插入流的dpb_output_delay小于原始流对应值,则将插入流的dpb_output_delay修改为原始流的对应值。
[0052]根据本发明另一方面,还提出一种视频流的拼接系统,该系统包括拼接器,该拼接器包括:消息过滤器,解析拼接码流中的SEI消息;时间计算器,根据SEI消息计算拼接后码流从CPB中移出的延迟时间值,并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。
[0053]优选地,该拼接器还包括验证器,根据该SEI消息进行解码之后,进行假想参考解码器(HRD)验证,以验证HRD兼容一致性。
[0054]优选地,拼接后码流的cpb_removal_delay为:
[0055]cpb_removal_delay
[0056]= (initial_cpb_removal_delay [SchedSelldx] +90000+1^ (ns_l) _tr,n(nb)) +tc。
[0057]其中,t。是一个时钟记号;
[0058]initial_cpb_removal_delay [SchedSelldx]是与访问单兀 n 相关的缓冲周期 SEI消息中所定义的,表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟;
[0059]taf(ns-l)表示拼接点ns前一个访问单元移出CPB的时间;
[0060]当访问单元η是当前缓冲周期的第一个单元时,、n(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr;n(nb)为当前缓冲周期的第一个访问单元的移出时刻。
[0061]优选地,拼接后码流的cpb_removal_delay为:
[0062]cpb_removal_deIay=DeIayOffset=
[0063]Ceil ((initial_cpb_removal_delay [SchedSelldx] +90000+taf (ns_l) _tr,n(nb))+ tc),
[0064]其中,DelayOffset为偏移量,Ceil表示向上取整。
[0065]优选地,拼接后码流的cpb_removal_delay为:
[0066]cpb_removal_delay=
[0067]Max (DelayOff set, cpb_removal_delayorig),
[0068]其中,cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的 cpb_removal_delay 值。
[0069]优选地,时间计算器根据SEI消息计算拼接后码流从DPB中移出的延迟时间值,并替换SEI消息中携带的从DPB中移出的延迟时间值,以根据该SEI消息进行显示,其中,SEI消息携带的从DPB中移出的延迟时间值是根据拼接前的码流得到的;其中,当插入流的dpb_output_delay小于原始流对应值,则将拼接后的码流的initial_dpb_output_delay修改为大于等于所有码流的initial_dpb_output_delay ;当插入流的dpb_output_delay小于原始流对应值,则将插入流的dpb_output_delay修改为原始流的对应值。
[0070]本发明不需要在H.264/AVC压缩码流中插入拼接SEI消息,也不需要对H.264/AVC标准中的HRD模型进行修改,就可以解决独立编码的H.264/AVC码流拼接后的HRD兼容问题。
【专利附图】
【附图说明】
[0071]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0072]图1所示为本发明提出的一种视频流的拼接方法的实施例的示意图。
[0073]图2所示为本发明提出的一种视频流的拼接方法的另一实施例的示意图。
[0074]图3所示为本发明提出的一种视频流的拼接系统的实施例的示意图。
[0075]图4所示为本发明中H.264/AVC视频流拼接cpb_removal_delay的调整示意图。
[0076]图5所示为本发明中H.264/AVC视频流拼接dpb_output_delay的调整示意图。
[0077]图6所示为本发明中H.264/AVC视频流拼接器的示意图。
【具体实施方式】
[0078]现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置和数值不限制本发明的范围。
[0079]同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
[0080]以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
[0081]对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
[0082]在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
[0083]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0084]现有技术在码流中插入自定义的拼接SEI消息,并要求解码器识别该自定义的SEI消息以进行拼接操作,导致拼接码流不符合HRD模型一致性的要求。
[0085]针对上述拼接码流的HRD兼容问题,本发明提出了一种H.264/AVC视频流拼接的方法和系统。在拼接器上对码流进行相应的处理,不需要在H.264/AVC压缩码流中插入拼接SEI消息,也不需要对H.264/AVC标准中的HRD模型进行修改,就可以解决独立编码的H.264/AVC码流拼接后的HRD兼容问题。
[0086]本发明根据HRD模型对H.264/AVC码流的要求,在拼接器上对拼接后的码流中的cpb_removal_delay和dpb_output_delay取值进行重新计算,并将计算结果反映到相应的SEI消息中,即,将cpb_reamoval_delay和dpb_output_delay写入到图像定时SEI消息中,这要求拼接器对拼接后的码流中的所有SEI消息进行修改。
[0087]具体来说,上述的HRD兼容性的第一和第二方面可以通过重新计算cpb_removal_delay和dpb_output_delay的值,并改变拼接后的码流中的图像定时SEI消息和缓冲周期SEI消息。而HRD兼容性问题的第三方面是由initial_cpb_removal_delay导致,如果仅仅减少其取值可能导致缓冲区下溢以及后继图像的最后到达时间延迟。这最终又将导致后继的缓冲区周期产生新的HRD C-15/C-16等式冲突。这是由initial_cpb_removal_delay本身取值的物理意义决定的,其值规定了图像从CPB中移出的时间,如果减少,表示移出时间提前,缓冲区被占用,所以导致下溢(即缓存区空)。一旦缓冲区提前变空,解码器只能等待后继图像比特流到来才能解码。为解决C-15/C-16等式冲突的问题,采取的办法是延长拼接点后的码流中的第一个存取单元规定的离开时间,即通过调整其cpb_removal_delay取值来完成。
[0088]具体算法按照对cpb_removal_delay和dpb_output_delay的调整详细说明如下:
[0089]一,拼接后码流的 cpb_removal_delay 调整
[0090]由于cpb_removal_delay不仅需要调节拼接后的取值,还需要保证拼接后initial_cpb_removal_delay不违反HRD模型中的C-15/C-16等式,所以其值需要进行两次调整:
[0091]1、替换原始视频压缩流中的cpb_removal_delay
[0092]根据HRD模型(H.264/AVC标准附录C)的规定,对应拼接点ns,也就是缓冲周期第一个存取单元的规定移出时间Uns)的计算如下:
[0093]tr,n(ns) =tr,n(nb)+tcX cpb_removal_delay (η) (2-1)
[0094]这里、n(n,)表示前一个缓冲周期中的第一个存取单元的规定移出时间,cpb_removal_delay (η)是存取单元所携带的图像定时SEI信息的语法值。语法值是表示这个语法元素是经过编码存储在视频码流中的,即其值是比特流经过解码获得的。
[0095]经过拼接后,对于拼接点后的第一个存取单元而言,其前一个缓冲周期是拼接后的码流,所以需要记录下拼接点前最后一个缓冲周期长度:
[0096]cpb_removal_delay=cpb_removal_de Iayorig (2-2)
[0097]这里cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的 cpb_removal_delay 值。
[0098]2、调整cpb_removal_delay取值,确保拼接后码流不违反HRD模型中的C-15/C-16等式
[0099]具体调整方法描述如下:
[0100]首先,定义偏移量DelayOffset如下:
[0101]DelayOffset=
[0102]Ceil ((initial_cpb_removal_delay [SchedSelldx] +90000+taf (ns_l) _tr,n(nb))+ tc) (2-3)
[0103]这里taf (ns_l)表示拼接点ns前一个访问单元移出CPB的时间。
[0104]initialcpb_remova!delay [SchedSelIdx]是与访问单兀n相关的缓冲周期 SEI 消息中所定义的。表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟,这个延迟是从与该缓冲周期SEI消息相关联的访问单元中的编码数据的第一个比特到达,到其数据从CPB中删除的时间间隔。initial_cpb_removal_delay [SchedSelldx]单位是90kHz的时钟(即1/90000秒)。
[0105]然后,定义:
[0106]cpb_removal_delay=
[0107]Max (DelayOffset, cpb_remova! l_elayorig) (2-4)
[0108]即定义cpb_removal_delay的取值为(2-2)和(2-3)的最大值,这样可以确保拼接操作不违反HRD的C-15/C-16等式。
[0109]这一点可以证明如下:
[0110]假设(2-4)的取值是DelayOffset,即cpb_removal_delay 取值为(2-3),我们不进行向上取整(Ceil)操作,直接取 DelayOffset 的值为:(initial_cpb_removal_delay [SchedSelldx]+90000+taf (ns_l) _tr,n(nd)+t。,并将其代入公式(2-1)计算 tr,n(ns)取值:
[0111]tr,n(ns) =tr,n(nb) +tc X cpb_removal_delay (n)
[0112]= (initial_cpb_removal_delay [SchedSelldx] +90000+taf (ns_l)) (2-5)
[0113]此时的
[0114]Δ tg,90(ns) =90000 X (tr’n(ns) _taf(ns_4) ) = initial_cpb_removal_delay[SchedSelldx]
[0115]其中,Atg,9CI(ns)是标准中的定义值,表示图像ns的规定移出时间与前一副图像ns-l的最终移出时间之差。
[0116]这就证明了经过(2-4)取值,可以保证实际采用的Atg9tlOO大于或等于initial_cpb_removal_delay [SchedSelldx]。因为 C-15 和 C-16 要求 Ceil ( Δ tg,9。(η))取值大于initial_cpb_removal_delay [SchedSelldx],这显然保证了拼接码流不违反HRD模型中的等式C-15/C-16,即保证了拼接码流的HRD兼容一致性。
[0117]二,拼接后码流的dpb_output_delay调整
[0118]根据插入视频流的GOP (Group of Pictures,画面组)结构,可以分成两种情况进行处理:
[0119]1、插入流的dpb_output_delay大于原始流对应值
[0120]拼接是出现图像帧重叠或者空白图像帧的解决办法:对于多码流拼接,则调整方式是使得拼接后的码流的initial_dpb_output_delay大于等于所有码流的initial_dpb_output_delay。
[0121]因为缓冲周期中的每个访问单元都包含图像定时(Picture Timing) SEI消息,所以拼接器需要对码流中的每个存取单元的dpb_0UtpUt_delay做调整。其中,可以根据码流类型判断插入流的dpb_output_delay是否大于原始流对应值,例如,当包含B巾贞时,认为插入流的dpb_output_delay小于原始流对应值。
[0122]2、插入流的dpb_output_delay小于原始流对应值
[0123]这种情况下,只需要调整插入流的dpb_output_delay为原始流的对应值即可。
[0124]本发明对拼接码流的HRD相关参数进行调整,即对从CPB中移出的延迟时间值(cpb_removal_delay)和从DPB中移出的延迟时间值(dpb_output_delay)进行修改,不仅有效保证了拼接码流满足HRD兼容一致性问题,还不需要在解码器上修改cpb_rem0val_delay和dpb_output_delay的解析功能,也不需要采用自定义的拼接消息,保证了 H.264/AVC标准定义的HRD模型在编码器端和解码器端的一致性。
[0125]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0126]图1所示为本发明提出的一种视频流的拼接方法的实施例的示意图。该方法包括以下步骤:
[0127]步骤11,解析拼接码流中的SEI消息。
[0128]步骤12,根据SEI消息计算拼接后码流从CPB中移出的延迟时间值(cpb_removal_delay),并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。
[0129]还如图1所示,在本发明的另一实施例中,还包括以下步骤:
[0130]步骤13,根据该SEI消息进行解码之后,进行假想参考解码器(HRD)验证,以验证HRD兼容一致性。
[0131]在本发明的另一实施例中,拼接后码流的cpb_removal_delay为:
[0132]cpb_removal_delay
[0133]= (initial_cpb_removal_delay [SchedSelldx] +90000+1^ (ns_l) _tr,n(nb)) +tc
[0134]其中,t。是一个时钟记号;
[0135]initial_cpb_removal_delay [SchedSelldx]是与访问单兀 n 相关的缓冲周期 SEI消息中所定义的,表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟;
[0136]taf(ns-l)表示拼接点ns前一个访问单元移出CPB的时间;
[0137]当访问单元η是当前缓冲周期的第一个单元时,、n(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr;n(nb)为当前缓冲周期的第一个访问单元的移出时刻。
[0138]在本发明的另一实施例中,拼接后码流的cpb_removal_delay为:
[0139]cpb_removal_deIay=DeIayOffset=
[0140]Ceil ((initial—cpb—removal—delay [SchedSelldx] +90000+taf (ns_l) -tr n(nb))+tc),
[0141]其中,DelayOffset为偏移量,Ceil表示向上取整。
[0142]在本发明的另一实施例中,拼接后码流的cpb_removal_delay为:
[0143]cpb—removal—delay=
[0144]Max (DelayOffset, cpb—removal—delayQrig),
[0145]其中,cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的 cpb_removal_delay 值。
[0146]图2所示为本发明提出的一种视频流的拼接方法的另一实施例的示意图。该方法包括以下步骤:
[0147]步骤21,解析拼接码流中的SEI消息。
[0148]步骤22,根据SEI消息计算拼接后码流从DPB中移出的延迟时间值(dpb_output_delay),并替换SEI消息中携带的从DPB中移出的延迟时间值,以根据该SEI消息进行显示,其中,SEI消息携带的从DPB中移出的延迟时间值是根据拼接前的码流得到的。
[0149]其中,当插入流的dpb_output_de I ay小于原始流对应值,则将拼接后的码流的initial_dpb_output_delay 修改为大于等于所有码流的 initial_dpb_output_delay ;
[0150]当插入流的dpb_output_delay小于原始流对应值,则将插入流的dpb_output_delay修改为原始流的对应值。
[0151]图3所示为本发明提出的一种视频流的拼接系统的实施例的示意图。该系统包括拼接器,如图3所示的实施例中,该系统包括拼接器和解码器,此外,该系统还可以包括编码器。其中,该拼接器包括:消息过滤器和时间计算器。
[0152]消息过滤器,解析拼接码流中的SEI消息。
[0153]时间计算器,根据SEI消息计算拼接后码流从CPB中移出的延迟时间值,并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。
[0154]还如图3所示,本发明的另一系统实施例,拼接器还包括:
[0155]验证器,根据该SEI消息进行解码之后,进行假想参考解码器(HRD)验证,以验证HRD兼容一致性。
[0156]在本发明的另一实施例中,拼接后码流的cpb_removal_delay为:
[0157]cpb_removal_delay
[0158]= (initial_cpb_removal_delay [SchedSelldx] +90000+1^ (ns_l) _tr,n(nb)) +tc
[0159]其中,t。是一个时钟记号;
[0160]initial cpb_remova! delay [SchedSelldx]是与访问单兀 n 相关的缓冲周期 SEI消息中所定义的,表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟;
[0161]taf(ns-l)表示拼接点ns前一个访问单元移出CPB的时间;
[0162]当访问单元η是当前缓冲周期的第一个单元时,、n(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr>n(nb)为当前缓冲周期的第一个访问单元的移出时刻。
[0163]在本发明的另一实施例中,拼接后码流的cpb_removal_delay为:
[0164]cp_removal_de Iay=De IayOffset=
[0165]Ceil ((initial—cpb—removal—delay [SchedSelldx] +90000+taf (ns_l) -tr n(nb))+tc),
[0166]其中,DelayOffset为偏移量,Ceil表示向上取整。
[0167]在本发明的另一实施例中,拼接后码流的cpb_removal_delay为:
[0168]cpb—removal—delay=
[0169]Max (DelayOffset, cpb—removal—delayorig),
[0170]其中,cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的 cpb_removal_delay 值。
[0171]在本发明的另一实施例中,还包括:
[0172]时间计算器根据SEI消息计算拼接后码流从DPB中移出的延迟时间值,并替换SEI消息中携带的从DPB中移出的延迟时间值,以根据该SEI消息进行显示,其中,SEI消息携带的从DPB中移出的延迟时间值是根据拼接前的码流得到的。
[0173]其中,当插入流的dpb_output_delay小于原始流对应值,则将拼接后的码流的initial_dpb_output_delay 修改为大于等于所有码流的 initial_dpb_output_delay ;
[0174]当插入流的dpb_output_delay小于原始流对应值,则将插入流的dpb_output_delay修改为原始流的对应值。
[0175]下面通过具体实施例和附图对本发明作进一步的描述。
[0176]本实例中的拼接器接收streaml、stream2两段独立的H.264/AVC压缩视频流作为输入,在指定的拼接位置将streaml的A段与stream2的D段拼接在一起成为新的H.264/AVC压缩视频流stream3作为输出。拼接流stream3由streaml的A段和stream2的D段构成,同时其满足H.264/AVC标准的HRD要求。
[0177]本实例使用的拼接器包括:消息过滤器、CPB/DPB时间计算器和HRD兼容验证器。其中,消息过滤器包括序列消息过滤器、图像信息过滤器和缓冲周期信息过滤器。
[0178]序列消息过滤器通过对码流中的H.264/AVC序列参数集信息进行解析获取输入码流的缓冲区大小和比特率信息。
[0179]图像信息过滤器通过对码流中的H.264/AVC图像参数集信息进行解析获取图像大小信息。
[0180]缓冲周期信息过滤器通过对码流中的H.264/AVC图像缓冲SEI信息进行解析获取图像移出时间延迟信息。
[0181]消息过滤器用来解析码流中的SEI消息,解析出来的值就是上面提及的语法值。HRD信息是码流中SEI信息携带的语法值。因此,通过上述三个过滤器获取输入视频流的HRD信息,并传递给CPB/DPB时间计算器和HRD兼容验证器,其使用上述的公式(2_2?2_5)进行cpb_removal_delay和dpb_output_delay取值的计算和HRD验证,获取到HRD兼容的取值。
[0182]图4所示为本发明中H.264/AVC视频流拼接cpb_removal_delay的调整示意图。
[0183]如图4所示,将H.264视频流streaml和stream2拼接在一起,且对于streaml,拼接点前后的视频分别用A和B表示,对于Stream2,拼接点前后的视频分别用C和D表示。
[0184]拼接后的视频可以表示为:A+D。
[0185]如图4的下部所示,进行拼接前,D视频的第一个缓冲周期的cpb_removal_delay值是根据拼接前的C视频计算的。而拼接后的视频为A+D,所以D视频的cpb_removal_delay取值应该等于B视频的cpb_removal_delay值。因为拼接完成后,D视频是与A视频拼接在一起,所以D视频的cpb_removal_delay取值需要根据A视频来计算,即B视频的cpb_removal_delay 取值。
[0186]在本实例中,表示streaml的B段的第一个存取单元的cpb_removal_delay值。
[0187]图5所示为本发明H.264/AVC视频流拼接dpb_output_delay的调整示意图。
[0188]如图5所示,以原始流为“I PPPP P……P”,插入流为“I B P BP……B P”为例,此时会在插入点遇到显示间隔,插出点遇到输出时间重叠的问题。对于插入点不需要处理,对于插出点,需要对整段码流中的dpb_output_delay取值进行调整。
[0189]如图5中的第一个视频,即原始流“I P P P……P”,解码时间和显示时间没有延迟,所以解码时间和显示时间是一一对应的。
[0190]图5中的第二个视频,即原始流“I PBP B……B”,因为存在B帧,所以由图5可知,解码时间和显示时间有重排关系。
[0191]当“I P P P……P”和“I PBP B……B”拼接在一起后,如图5中的第三个视频,在拼接点的P图像和I图像的显示时间和解码时间对应关系需要修改。即,本发明通过修改cpb_removal_delay来调整解码时间,通过修改dpb_output_delay来调整显示时间。从而,使得输出的码流更加平滑,减少了卡机、黑屏等现象。
[0192]图6所示为本发明中H.264/AVC视频流拼接器的示意图。
[0193]拼接器接收编码器I和编码器2输出的H.264/AVC码流,经过拼接处理,输出的拼接流满足H.264/AVC标准的HRD兼容一致性,标准的解码器可以进行解码,不需要对解码器进行任何修改。
[0194]和现有技术相比,本发明对H.264/AVC码流的处理都是在拼接器上完成,对终端解码系统不需要进行任何修改。
[0195]对拼接码流从CPB中移出的延迟时间值(cpb_removal_delay)和从DPB中移出的延迟时间值(dpb_output_delay)的调整,本身就是拼接操作的一部分,将其定位于拼接器功能,满足拼接器的功能定位。并且,本发明不需要定义额外的拼接点SEI消息,也不需要对解码器进行修改。
[0196]至此,已经详细描述了本发明。为了避免遮蔽本发明的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
[0197]可能以许多方式来实现本发明的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
[0198]虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
【权利要求】
1.一种视频流的拼接方法,其特征在于: 解析拼接码流中的补充的增强信息(SEI)消息; 根据SEI消息计算拼接后码流从编码图像缓冲区(CPB)中移出的延迟时间值(cpb_removal_delay),并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。
2.根据权利要求1所述视频流的拼接方法,其特征在于: 根据该SEI消息进行解码之后,进行假想参考解码器(HRD)验证,以验证HRD兼容一致性。
3.根据权利要求1或2所述视频流的拼接方法,其特征在于: 拼接后码流的cpb_removal_delay为:
cpb_r emo val_de I ay = (ini t ial_cpb_removal_de lay [SchedSe 11 dX] +90000+taf (ns_l)_tr,n(nb)) +tc 其中,t。是一个时钟记号; initial_cpb_removal_delay [SchedSelldx]是与访问单元n相关的缓冲周期SEI消息中所定义的,表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟;taf (ns-l)表示拼接点ns前一个访问单元移出CPB的时间; 当访问单元η是当前缓冲周期的第一个单元时,tnn(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr>n(nb)为当前缓冲周期的第一个访问单元的移出时刻。
4.根据权利要求3所述视频流的拼接方法,其特征在于: 拼接后码流的cpb_removal_delay为:
cpb—removal—deIay=DeIayOffset=
ceil ((initial—cpb—removal—delay [SchedSelIdx + 90000+taf (ns_l) -tr n(nb)) +tc),
其中,DelayOffset为偏移量,Ceil表示向上取整。
5.根据权利要求4所述视频流的拼接方法,其特征在于: 拼接后码流的cpb_removal_delay为:
cpb_removal_deIay=Max (DelayOffset, cpb_removal_delayorigi其中,cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的cpb_removal_delay 值。
6.根据权利要求1或2所述视频流的拼接方法,其特征在于: 根据SEI消息计算拼接后码流从解码图像缓冲区(DPB)中移出的延迟时间值(dpb_output_delay),并替换SEI消息中携带的从DPB中移出的延迟时间值,以根据该SEI消息进行显示,其中,SEI消息携带的从DPB中移出的延迟时间值是根据拼接前的码流得到的;其中,当插入流的dpb_output_delay小于原始流对应值,则将拼接后的码流的initial_dpb_output_delay 修改为大于等于所有码流的 initial_dpb_output_delay ;当插入流的dpb_output_delay小于原始流对应值,则将插入流的dpb_output_delay修改为原始流的对应值。
7.一种视频流的拼接系统,该系统包括拼接器,其特征在于,该拼接器包括: 消息过滤器,解析拼接码流中的SEI消息; 时间计算器,根据SEI消息计算拼接后码流从CPB中移出的延迟时间值,并替换SEI消息中携带的从CPB中移出的延迟时间值,以根据该SEI消息进行解码,其中,SEI消息携带的从CPB中移出的延迟时间值是根据拼接前的码流得到的。
8.根据权利要求7所述视频流的拼接系统,其特征在于,该拼接器还包括: 验证器,根据该SEI消息进行解码之后,进行假想参考解码器(HRD)验证,以验证HRD兼容一致性。
9.根据权利要求7或8所述视频流的拼接系统,其特征在于: 拼接后码流的cpb_removal_delay为: cpb_removal_delay
=(initial—cpb—removal—delay [SchedSeIIdX] +90000+taf (ns_l) -tr?n(nb)) +tc。 其中,t。是一个时钟记号; initial_cpb_removal_delay [SchedSelldx]是与访问单元n相关的缓冲周期SEI消息中所定义的,表示在HRD初始化后的第一个缓冲周期,第SchedSelldx个CPB的时间延迟;taf (ns-l)表示拼接点ns前一个访问单元移出CPB的时间; 当访问单元η是当前缓冲周期的第一个单元时,、n(nb)为前一个缓冲周期的第一个访问单元的移出时刻;当访问单元η不是当前缓冲周期的第一个单元时,tr;f (nb)为当前缓冲周期的第一个访问单元的移出时刻。
10.根据权利要求9所述视频流的拼接系统,其特征在于: 拼接后码流的cpb_removal_delay为: cpb_removal_deIay=DeIayOffset=
ceil ((ini t ial_cpb_removal_de lay [SchedSe 11 dx] +90000+taf (ns-l)_tr,n(nb)) +tc),
其中,DelayOffset为偏移量,Ceil表示向上取整。
11.根据权利要求10所述视频流的拼接系统,其特征在于: 拼接后码流的cpb_removal_delay为:
cpb_removal_deIay=Max (DelayOffset, cpb_removal_deIayorig), 其中,cpb_removal_delayOTig表示第一段原始码流在拼接点后的第一个存取单元的cpb_removal_delay 值。
12.根据权利要求7或8所述视频流的拼接系统,其特征在于: 时间计算器根据SEI消息计算拼接后码流从DPB中移出的延迟时间值,并替换SEI消息中携带的从DPB中移出的延迟时间值,以根据该SEI消息进行显示,其中,SEI消息携带的从DPB中移出的延迟时间值是根据拼接前的码流得到的; 其中,当插入流的dpb_output_delay小于原始流对应值,则将拼接后的码流的initial_dpb_output_delay 修改为大于等于所有码流的 initial_dpb_output_delay ;当插入流的dpb_output_delay小于原始流对应值,则将插入流的dpb_output_delay修改为原始流的对应值。
【文档编号】H04N21/44GK104519370SQ201310454295
【公开日】2015年4月15日 申请日期:2013年9月29日 优先权日:2013年9月29日
【发明者】陈杲, 张长学, 赵旭泽 申请人:中国电信股份有限公司