数字视频传输流的拼接 【技术领域】
本发明涉及数字视频信号的处理,更特别地,涉及将第二传输流拼接成到第一传输流中,从而使插入(例如)广告、本地节目等成为可能。
背景技术
数字视听内容的广播在有线和卫星电视网络中日渐流行,并期望逐步取代在此种网络和电视广播网络中使用的模拟方案。已经为数字视听内容的通信开发了不同的标准,例如由运动图像专家组发布的MPEG-2标准。而且,MPEG-2提出了一个传输流拼接的框架,虽然不完整,在“ITU-T建议H.222.0|ISO/IEC 13818-1的修改文本,信息技术-运动图像和相关音频信息的通用编码:系统,”ISO/IEC JTC 1/SC29,1995年4月27日,135-138页(附录L-拼接传输流)中有所讨论。
MPEG-2标准提供了在一个传输分组修改字段中与拼接有关的语法元素。该语法元素包括一个拼接点标记(splicing_point_flag),它是一个指示是否出现一个拼接倒数计数(splice_countdown)字段的单个比特。该splice_countdown字段用于在拼接点之前倒数计数出现了多少个有相同分组标识(PID)的分组。此外,其splice_countdown字段值为0的传输流分组称作拼接分组。拼接点直接位于该拼接分组地最后一个字节之后。
然而,一些过去的补充MPEG-2性能的建议要求解码数字传输流中的几个数据层,以获得准许一个广告或本地内容成功插入所需的不同信息。在另一方法中,以保持一些原始编码参数的方式解码全部数据流,包括视频和音频。然后,插入一个广告或其他内容到解码流中,使用传送的、在解码过程中获得的参数重新编码该流。目的是,与没有这些参数的重新编码相比较,允许更高效率的重新编码。然而,这些先前的系统遭受不同问题,例如在拼接进一个第二传输流之前,未能结束一个第一传输流的一个“图像组(GOP)”,未能维持视频缓冲器检验器(VBV)免受缓冲器下溢和溢出,在该拼接点第一和第二传输流之间间断的时钟参考,以及在拼接点间断的时间标记(例如,显示和解码时间标记)。
此外,任何数字视频系统都应确保在消费者家中的解码器是拼接无察觉的(即,不知道拼接数据的存在)。这是为了避免不得不替换这些解码器以及防止“广告杀手”装置的使用,这些装置检测并遮蔽广告。
一个数字视频拼接系统还应当与恒定比特速率(CBR)和可变比特速率(VBR)流兼容。通常,必须调整提供到,例如一个有线电视网络用户终端或类似的,数字视频节目的一个比特速率。例如,可能经一个卫星传输在一个数据转发器接收一个第一组信号。数据转发器操作员可能想前传选择后的节目给用户,同时从一个本地来源,例如存储介质或一个本地现场广播,添加节目(例如,广告或其他内容)。此外,通常必须在全部可用信道带宽内提供节目。
因此,提出统计重复用器(stat remux),或多信道译码器,它通过以一个特定比特速率重新压缩视频比特流来处理压缩前视频比特流。一个stat remux系统,它给各信道提供一个比特速率需要参数,以使对于代码转换信道以一个优化编码数据图像质量,同时符合一个限定通过量约束的方式分配比特,公开在共同转让的2000年9月25日提交的美国专利申请号为09/669517,名称为“在不同代码转换信道中具有带宽分配的统计解复用器”中。
为了在为数字视频传输建立的框架内有效操作,拼接广告或其他内容到一个与插入操作下行流使用的译码器兼容的数字传输流中对于任何系统都是极其有利的。实际上,通常需要这样的译码器,从而保持一个预定输出比特速率并提供缓冲器保护,如本发明所教导的。此类译码器的特征被公开,例如,共同转让的2000年4月13日的国际专利公开号为WO0021302、名称为“在一个视频译码器中用于提供速率控制的方法和设备”,以及在N.Bjork等人的“视频译码的译码器结构”IEEE Transactions on Consumer Electronics,44期1册,1998年2月,自此结合参考。
更有利的是,提供一个数字视频拼接系统,它在比特流之间加入适当数目的帧,当需要时,在正拼接一个新比特流的地方正确结束原始比特流的最后GOP。另一个更有利的是,提供一个拼接系统,它调节原始和新的比特流的各自定时参考(例如节目时钟参考-“PCR”),以促进其间的连续性。例如,对于短时间插入,例如30秒或一分钟广告及类似,跟踪原始节目流和插入流(例如广告)的PCR,同时使用原始节目流的PCR是有益的。对于较长时间的插入,例如可能运行30分钟或更长的本地节目,在用一个计算出对于原始节目流PCR的偏移量调整之后,使用本地节目的PCR,以在拼接点保持连续性是有利的。
修改插入流的显示时间标记(PTS)和/或解码时间标记(DTS)以在拼接点对于视频和音频流保持其连续也是有益的。
本发明提供了一个具有以上和其他优点的系统。
发明概述
本发明涉及一个用于将一个第二压缩视频传输流拼接到一个第一压缩视频传输流中的方法。该第二传输流的一个内部编码帧(I-帧)位于拼接操作的起点。一旦设置I-帧,与该第二传输流的后续帧一起被存储到一个暂时存储缓冲器中。搜索该第一传输流,寻找一个适当的插入点。一个至少该第一和第二传输流之一的时间基准被调整以促进在插入点及其之后的传输流之间的连续性。
调整步骤可以,例如,调整该第二传输流的一个节目时钟参考(PCR),以匹配所述第一传输流的一个PCR。例如,可加入一个偏移量到所述第二传输流的PCR,其中,该偏移量代表该第一和第二传输流PCR之间时间上的一个差额。
在一个实施例中,跟踪该第二传输流调整后的PCR,用于解码由该第二传输流携带的信息。在另一个实施例中,该第一传输流的PCR被跟踪,用于解码由第二传输流携带的信息。
该第一和第二传输流通常将携带连续视频帧,该连续视频帧具有参考一个各自传输流的时间基准的解码时间标记(DTS)。结果,调整步骤调整第二传输流的时间基准,第二传输流帧的解码时间标记也被相应调整。例如,可以将一个偏移量加入到所述第二传输流的解码时间标记中,该偏移量代表一个在(i)在所述插入点之前第一传输流一个最后帧的DTS,和(ii)位于拼接操作开始位置的第二传输流I-帧的DTS之间的时间上的差额。
在一个MPEG-2装置中,至少一些第一和第二传输流帧将具有参考各自传输流时间基准的显示时间标记(PTS)。依照本发明,可将一个偏移量加入到第二传输流的显示时间标记,该偏移量代表一个在(i)在所述插入点之前出现的第一传输流最后的PTS,和(ii)在或在插入点之后出现的第二传输流的第一个PTS之间的时间上的差额。注意到,MPEG-2规范不要求PTS或DTS每帧。当没有出现PTS/DTS时,可依照本发明基于最后接收到的PTS/DTS和自从最后接收到的PTS/DTS以来传送的帧的类型(即,重复字段(repeat_fields)和I/B/P帧)计算该帧的PTS/DTS。高级电视系统委员会(ATSC)规范需要一个PTS每帧和关于DTS和PTS不相等的帧的一个DTS。
在一个优选实施例中,插入点将跟随第一传输流中的一个图像组(GOP)或一个子GOP。除非插入点与该GOP或子GOP的末端精确一致,在GOP或子GOP的末端的第一传输流最近的锚帧将被重复直至出现插入点。该步骤在拼接到第二比特流之前有效的结束了第一比特流的GOP。
应当理解,每个视频帧,包括上面提及的锚帧,将通常包括多个显示字段(例如,一个顶部字段和一个底部字段)。由于在上行流译码器的detelecine处理,第一比特流结尾字段的极性并不总是补足第二比特流开始字段的极性。在本发明优选实施例中,调整重复锚帧中显示字段的数目,从而在插入点之前由锚帧显示的最后一个字段将补足插入的第二传输流初始I-帧的第一显示字段。换句话说,如果第二传输流的I-帧首先显示顶部字段,则第一传输流的前述锚帧将被调整以显示其底部字段结束,以及相反。
拼接传输流被提供给一个译码器,该译码器对于拼接流保持一个预期的输出比特速率。该译码器进一步提供来自一个视频缓冲检验器的下溢或溢出的保护。
本发明同样提供相应的设备。
附图简要说明
该附图是一个根据本发明显示拼接操作的结构图。
发明详细说明
本发明涉及数字视频处理,特别的,涉及用于拼接广告,本地节目以及类似到一个数字视频传输流中,以传送电视和/或多媒体节目给观众的方法和设备。
为依照本发明执行拼接,一个类似于在G..Keesman等人“MPEG比特流代码转换”,Signal Processing:Image Communication,8(1996),481-500页中描述的译码器装置的代码转换处理器(“TPE”),被修改以改变前端信号分离的操作。附图显示如本发明一样修改TPE前端以添加拼接功能。一个输入流提供给一个通用多路信号分离器/剖析器10。本发明增加的额外的元件由一个用于保存一个第二视频传输流(用一个规定的分组标识(PID)识别,例如在MPEG-2标准中)起点的暂时FIFO12、一个插入点搜索模块14和一个定时调整处理器19组成。第二视频传输流的起点,如在此定义的,用一个内部编码帧(I-帧)识别,以通用方式由多路信号分离器/剖析器10定位。本发明的目的是用一个TPE将第二传输流(它携带,例如一个广告或一个本地节目片断)拼接到一个第一传输流(它通常携带一个电视节目,电影或类似)中。暂时FIFO12由多路信号分离器/剖析器以一个通常通用的方式,例如其他前端基本流(ES)缓冲器(例如视频ES缓冲器16和节目ES报头缓冲器17)馈送的方式,馈送信号,除了在一个拼接操作的起点外,在装满FIFO12之前,剖析器将搜索在第二视频传输流中的一个I-帧。在第二传输流上的第一图像组(GOP)的类型优选的被传送给TPE。如果没有提供这样的信息,则按照本发明,TPE将做出如下假设:
(a)对于来自一个广告服务器的一个比特流,第一GOP被假定是一个IBBP类型封闭GOP,其中最初的两个B-帧仅从I-帧预测,或一个类型IPBB封闭GOP,其中没有B-帧紧随在I-帧之后。通过检查在I-帧之后的图像报头做出准确地选择。
(b)对于所有其他比特流,假定GOP是一个开放GOP,IBBP。在开放GOP的情况下,I-帧解码器时间标记(DTS)被设置为与其显示时间标记少一帧时间相等(即,DTS=PTS-一帧时间)。直接跟随I-帧的任何后续B-帧都被丢弃,不进入FIFO。
在FIFO12的输出,提供一个模块14用于在第一传输流中搜索一个适当的插入点。此过程可以例如,通过搜索视频基本流缓冲器16寻找一个适当的插入点,被实现。缓冲器16保存实际的视频流(第一流或拼接的第二流),该视频流最终被译码并输出到一个分配网络(例如一个有线或卫星电视网络,一个因特网或类似),用于接收,处理以及由消费者观看。在优选实施例中,仅当暂时FIFO12包括视频数据(即,用于拼接到一个现存第一传输流中的第二传输流数据)时进行一个插入点的搜索。
提供一个定时调整处理器19以调整在节目基本流(PES)报头缓冲器17中的定时,如下面详细说明的。正如本领域公知的,PES报头包括数据,例如显示时间标记(PTS)、解码时间标记(DTS)和节目时钟参考(PCR)数据。缓冲器16和17从多路信号分离器/剖析器10接收其各自数据,并提供输出给一个译码器18,20用于进一步处理。一旦确定,处理器19通过插入点搜索模块14通知插入点。
注意到,根据它们相对于主硬件时钟的偏移量持续跟踪第一和第二传输比特流的时间基准是重要的。这样做的一个理由是,插入消息通常由电视节目制作者提供以识别何时插入广告,并且嵌入在插入消息中的拼接点PTS可能参考两个时间基准中的任何一个。在插入消息中提供的拼接时间假定在PTS域内。为了讨论简单,所有时间标记都被转化成硬件参考时间基准。这种插入消息通常在一个单独的PID流上携带,如本领域公知的,并提出在标准中,诸如SMPTE 312M“MPEG-2传输流的拼接点”;有线和无线通讯工程师协会(SCTE)数字视频小组委员会DVS-380,“数字节目插入拼接API”;以及DVS-253,“对于有线的数字节目插入插入消息”。
如果由拼接点插入消息给出的PTS是正确的,它将在第一比特流的一个锚帧(即,一个I或P帧)PTS之后的一个帧时间。否则,需要帧重复以弥补在插入消息PTS和在其之前的锚帧PTS之间的时间间隙。下面详细描述重复帧的使用。
为找到将第二传输流拼接到第一传输流中的正确的插入点,应用下列规则:
(A)当第二传输流(即,“第二PID”)是在一个服务器上的一个广告比特流,前端多路信号分离器10将搜索该流并捕获它发现的第一个I-帧。该I-帧被当作广告的起点。为该比特流的起点建立一个PTS。如果该广告流的起始PTS在插入消息的拼接点PTS之前,添加一个偏移量到该广告的PTS上,从而该广告PTS将与插入消息PTS匹配。所有来自广告传输流的后续PTS将被延迟相同量。如果该广告没有PTS,将使用来自插入消息的PTS。
(B)如果第二传输流是一个连续运行的节目,将假定所有GOP都是开放GOP(即,直接跟随一个I-帧的B-帧是从先前GOP和当前GOP双向预测的)。结果,这些B-帧在拼接操作中不可用,并被丢弃。对于在第二传输流中的每个GOP,I-帧的PTS和拼接点的PTS相比较。如果I-帧PTS等于或迟于拼接点,这个I-帧将是第二比特流的起点。该流的起点PTS仅仅是I-帧PTS。如前面讨论的,直接跟随I的B-帧被丢弃,并不存储在图1的暂时FIFO中。
上面的规则A和B确保了第二比特流的起始PTS等于或迟于拼接点PTS。然而,第二流的PTS并不需要与拼接点PTS帧同步。换句话说,第二比特流PTS不总是远离拼接点PTS的域的一个整数数字。为促进同步,本发明将一个偏移量加到第二比特流PTS上,从而满足整数条件。
只要PTS被延迟,相应的同一帧的DTS被延迟相同量。根据本发明优选实施例,PTS和DTS总是被延迟,并在时间上从不提前。这样就确保了由译码器的第二比特流的解码将稍迟出现而非提前,因此避免了解码器缓冲器的下溢。另一方面,暂时缓冲器的溢出将出现在拼接点,因为两个比特流被分别编码并且它们的缓冲器模型在拼接点并不需要匹配。这可以通过提高附图所示的主视频基本流缓冲器16的尺寸解决。
为顺着第一比特流找到正确的插入点,搜索处理(模块14)将检查已经在主基本流(ES)缓冲器中的帧的PTS。一旦它发现一个其PTS超过拼接点PTS减一帧时间(即,拼接点PTS-一帧时间)的帧,那个帧和它所属的子GOP将被丢弃,或仅重写,当主ES缓冲器是一个用随机访问存储器(RAM)实现的缓冲器时。规定该插入点在丢弃的子GOP之前。实际上,所有第一比特流中在丢弃的子GOP之后的帧将由第二比特流重写,因为不再需要它们。
为确定在两个比特流之间的重复帧的数目,多路信号分离器10需要以下信息:(i)在接入点之前的锚帧的PTS;以及
(ii)第二比特流起点的PTS,如上面根据规则A和B找到的。在这两个之间的距离至少分开两个域。多路信号分离器10同样需要知道属于锚帧的和属于第二比特流最初的显示帧的顶部字段最初(top_field_first)比特。使用这些信息,多路信号分离器10进行以下步骤:
I)如果两个top_field_first比特匹配,并且PTS之间的距离是一个偶数数目字段,则插入的重复帧数目仅是PTS之间少于一帧时间的距离。在优选实施例中,来自第一比特流的锚帧的重复最初字段(repeat_first_field)标记设为0,虽然那些本领域的技术人员将理解,该标记基于使用的特定装置可被设为其他值。
II)如果两个top_field_first比特不匹配,并且PTS之间的距离是一个奇数数目字段,则所需重复帧的数目是PTS距离减三个字段时间。在优选实施例中,来自第一比特流的锚帧的repeat_first_field标记设为1,虽然那些本领域的技术人员将理解,该标记基于使用的特定装置可被设为其他值。
III)如果两个top_field_first比特匹配,然而PTS之间的距离是一个奇数数目字段,,则将一个额外的字段时间加到第二比特流的起点PTS上,如以上在步骤I中的相同方式对待该PTS。
IV)如果两个top_field_first比特不匹配,并且PTS之间的距离是一个偶数数目字段,则将一个额外的字段时间加到第二比特流的起点PTS上,如以上在步骤II中的相同方式对待该PTS。
应当注意到,通过改变一个锚帧的repeat_first_field标记,该锚帧包含的显示字段的数目被改变了。在此描述的特定实施例中,并非为限制的目的,如果repeat_first_field标记是1,显示字段的数目等于3;否则显示字段的数据等于2。这个新的数字将在下面创建重复帧和计算PTS和DTS值的说明中使用。
重复帧的实际插入如下:
a)属于第一比特流最后锚帧的PTS首先被存储在一个寄存器中。如果那个寄存器小于第二比特流的PTS减锚帧的显示字段数目,多路信号分离器将产生一个重复帧。该重复帧将具有一个由寄存器值加锚帧显示字段数目给出的PTS。该重复帧的DTS将设定为与锚帧的PTS相等。重复帧将总是一个P-帧,并总具有两个显示字段,正如在一个无胶片模式视频帧中的一样。然后寄存器被设定为重复帧的新的PTS值。
b)如果寄存器仍然小于第二比特流PTS减两个字段时间,则产生另外一个重复帧,其PTS等于寄存器值加两个字段;以及等于先前的重复帧的PTS的一个DTS。然后寄存器增加两个字段。创建重复帧的过程一直持续到上述“如果”条件不再为真时。
此时,在第二比特流中的第一I-帧插入到基本流缓冲器中。第一I-帧的DTS被设为第一比特流最后的锚帧或最后的重复帧的PTS。I-帧PTS设定为最后的锚帧或最后的重复帧的PTS加上包括在最后锚帧或重复帧中的显示字段数目,再加上直接跟随I-帧的B-帧所属的任何显示字段。
在I-帧插入之后,所有后续帧将来自第二比特流,并且它们的PTS/DTS值将从第一I-帧的时间标记外推。该外推法将遵从和使用在数字密码II+(DCII+)编码器中相同的算法,该编码器用在美国宾西法尼亚州Horsham,Motorola,Inc,以前的通用仪器公司、本发明的受让人,的宽带通信部门。特别的,对于一个B-帧,B-帧DTS设定为先前帧的DTS加上先前帧的显示字段数目。一个B-帧的PTS总是与自己的DTS相等。对于一个锚帧(即,一个I或P帧),它的DTS设定为先前锚帧的PTS,它的PTS设定为先前锚帧的PTS加上在先前锚帧中的显示字段的数目,再加上直接跟随当前锚帧的B-帧所属的显示字段的数目。
本发明的系统还包括一个在主视频基本流缓冲器16和节目基本流(PES)报头缓冲器17的输出端的译码器。附图所示的该译码器被分为两个部分,即,一个在代码转换过程期间使用的解码器18,和一个代码转换处理器的剩余组成部分20,其在本领域中是公知的。从译码器部分20提供输出传输流,如图所示。如在通常的代码转换模式中一样,在译码器的输入端,第一和第二比特流都具有各帧的第一分组,该第一分组用以下标记:1)流最近接收到的PCR时间标记;2)在PCR时间标记和译码器自己的硬件主时钟计数器(例如27MHz,该偏移量将被认为是PCR偏移量)之间的偏移量,以及3)最近PCR标记到达时间。到达时间将作为PCRHwInTag参考。
两个输入比特流具有其自己的周期PCR时间标记,代表两个独立的时钟,它们的频率接近但不精确等于27MHz。在拼接插入点,译码器将切换到第二比特流的新的PCR时间基准,同时需要保持PCR值的连续性。通过对第二比特流的PCR值应用一个调整因子实现这一目的。当在主ES缓冲器中发现拼接插入点时,在来自第二节目的帧可被写入主ES缓冲器之前,为PCR偏移量计算调整因子。调整因子由以下给出:
调整=斜度*(PCRHwInTag3-PCRHwInTag2)+PCRoffset2-PCRoffset3
其中斜度=(PCRoffset1-PCRoffset2)/(PCRHwInTag1-PCRHwInTag2)
PCRoffset3和PCRHwInTag3指的是PCR偏移量,并与第二传输流(“第二比特流”)的第一帧硬件标记有关。
PCRoffset2和PCRHwInTag2指的是PCR偏移量,并与第一传输流(“第一比特流”)的最后帧硬件标记有关。
PCRoffset1和PCRHwInTag1指的是PCR偏移量,并与第一比特流的倒数第二帧硬件标记有关。
以上描述的调整将在拼接实现后被应用到第二比特流上的所有PCR。它被加到来自第二比特流的PCR偏移量上。
译码器也处理速率控制。如上面结合寻找用于拼接的第二传输流的起始点所讨论的,通过延迟第二比特流的PTS/DTS,任何与视频基本流缓冲器下溢有关的问题自动解决。该缓冲器的溢出(例如由于两个不同比特流的拼接),可以通过提供一个大容量基本流缓冲器解决。
随着译码器能够正确解码组合(拼接)的比特流,从那个点开始的速率控制将如通常(即,未拼接)的比特流一样。译码器将使用与其通常代码转换模式下相同的速率控制算法。
应当理解,本发明提供了一个用于拼接广告,本地节目及类似到一个数字视频传输流中的机制。提出了不同的新颖的技术特征,包括在比特流之间增加适当数目的帧以正确结束一个第一比特流的GOP,携带广告、本地节目或类似的一个第二比特流插入以上第一比特流。必须调整比特流的节目时钟参考(PCRs),从而促进在比特流之间的连续性。例如,为插入广告,跟踪节目流和广告流的PCR,并且可以在拼接之前或之后使用节目流PCR.。对于本地节目插入(这样的本地节目通常实际上比广告长),可以使用本地节目的PCR,在用一个偏移量将其调整之后以保持在拼接点的连续性。此外,可以修改插入比特流的PTS和/或DTS以保持在拼接点视频和音频流的PTS/DTS的连续。最后,拼接的比特流被译码以保持一个预期输出比特速率,并提供视频缓冲器检验器缓冲保护。
虽然本发明结合不同优选实施说明,应当理解可以在其上进行不同的修改以及改变,而不偏离本发明在权利要求中提出的范围。