处理编码视频帧的序列的方法

文档序号:7977576阅读:471来源:国知局
处理编码视频帧的序列的方法
【专利摘要】一种处理由数字数据流传送的编码视频帧序列的方法,其中,每个帧表示图像,该方法包括在记录设备处接收编码视频帧序列,确定序列的第(i+1)个编码帧与序列的第(i+1)个编码帧的呈现之间的帧间隔,计算用于第(i+1)个编码帧的流时间戳,以及基于用于第(i+1)个编码视频帧的流时间戳和先前确定的帧间隔来计算用于第(i+1)个编码视频帧的流时间戳。
【专利说明】处理编码视频帧的序列的方法
【背景技术】
[0001]本专利申请的主题涉及处理编码视频帧的序列的方法。该处理方法允许以明确的方式在重放期间检索编码帧。
[0002]电视节目安排(programming)提供商通常产生用于由服务提供商(诸如有线电视系统运营商)通过视频传输网络分发到观看者的广大观众的节目安排信号。按照惯例,节目安排信号作为未压缩视频序列和至少一个相应的未压缩音频序列开始。本申请的主题涉及处理视频序列,并且相应地,我们将不进一步讨论音频序列。
[0003]未压缩视频序列由表示各图像的一系列连续帧组成,并且在产生设施处被组装。在组装之后,未压缩视频序列被视频编码器压缩,该视频编码器使用诸如一般地称为MPEG-2的视频压缩算法将每个帧编码,并且创建相应的压缩视频帧。该编码视频序列通过传输网络被发送至客户端,在客户端处,包括在接收终端中的视频解码器将用于所选节目的视频序列解码,并且将解码帧供应给电视机,用于向观看者呈现相应的图像序列。
[0004]MPEG-2视频压缩算法将未压缩视频帧编码为帧内编码帧或I帧、预测编码帧(P帧)或者双向预测编码帧(B帧)。I帧和P帧也称为参考帧或锚定帧,而B帧也称为相关帧(dependent frames)。I巾贞包含原始图片的完整描述。P巾贞包含与在时间上较早的I巾贞相比较的图片的描述。这允许编码器使用与等价I帧将需要的位相比明显更少的位来描述P帧。B帧包含与在时间上较早的参考帧和在时间上稍后的参考帧两者相比较的图片的描述。这允许编码器使用比等价I帧大约少了一个数量级的位来描述B帧。因此将认识到的是,P帧是相关帧(相对于I帧)和参考帧(相对于B帧)两者。
[0005]除包括表示捕捉的图像的数据之外,每个编码帧包括呈现时间戳。该呈现时间戳或PTS是由计数90kHz系统时钟信号的循环的计数器获得的计数的33位值。PTS值反映相对于系统时钟的帧的期望播出时间。
[0006]编码帧的序列被输入到系统编码器,系统编码器将编码帧封装在分组(诸如分组化的基本流分组,这对于本领域的技术人员而言是众所周知的)中,该分组能够通过适当的通信基础设施被高效地发送至包括视频解码器的接收终端。
[0007]一般地,旨在应当以与例如由照相机获取相应图像相同的顺序来呈现帧以进行显示。对于每个未压缩视频帧,视频编码器确定相应编码视频帧的适当类型和编码顺序中的编码帧的位置。编码器可以确定第一帧(Fl)应被编码为参考帧(I或P)。在这种情况下,接下来的两个帧(F2、F3)正常地将被编码为B帧且第四帧(F4)将被编码为P帧。编码器将首先将帧Fl和F4编码且然后使用编码帧Fl和F4作为参考帧将帧F2和F3编码。编码器以序列F1、F4、F2、F3来发送帧。
[0008]让我们假设帧Fl被编码为I帧。由于相关编码帧取决于至少一个参考帧,所以解码器必须在相关帧能够被解码之前将参考帧解码。因此,虽然编码帧按照编码顺序F1、F4、F2、F3被发送且随后被解码,但下游接收终端可能未简单地按照帧被接收到的顺序输出已解码帧。对于在序列中与其要被显示相比较更早地发送的编码帧而言,除PTS之外,系统编码器还相对于系统时间时钟将解码时间戳(DTS)插入编码帧的分组中。对于不需要重新排序的那些帧,DTS和PTS将是相同的,因此只有PTS被发送,并且PTS被用来确定解码时间。
[0009]接收终端以已知方式操作以生成被同步至编码器的系统时钟信号的系统时钟信号。具有最小功能的接收终端、诸如没有记录能力的简单机顶盒(STB)包括从分组化的基本流恢复编码视频帧的序列的接收器和接收编码视频帧、基于DTS来将帧缓冲并解码以及基于PTS将帧缓冲并呈现的视频解码器。
[0010]有线电视和卫星电视分发服务的许多订户使用结合了 PVR (个人视频录像机)的更尖端接收终端来记录电视节目材料以用于稍后的重放和观看。在这种情况下,视频帧以编码形式被存储,并且在期望时以与上述简单STB所采用的方式类似的方式被解码和重放。
[0011]典型的PVR支持各种特效播放模式,包括快进(FF)和快退(RR),这允许观看者快速地浏览不很感兴趣的材料。PVR通过丢弃接收序列的帧、即通过将接收序列的帧从被解码并供应给视频显示缓冲器的序列省略来实现FF和RR重放。PVR以正常的恒定速率(在美国,即每秒约30帧)来显示帧,但是由于接收序列的帧被丢弃,所以显示的图像以比在正常重放中更大的速度进行。
[0012]被视频编码器压缩的未压缩视频序列可以包括穿插有补充内容块(例如一个或多个商业广告、公益广告、站台识别消息等)的特征内容,诸如重演电视节目的情节。在产生设施处,节目安排提供商使用常规视频编辑技术来以预定间隔向特征内容中插入补充内容块。
[0013]在产生设施处被插入到未压缩视频序列中的补充内容块通常采取一系列视频序列的形式,其具有相对短的持续时间(例如8个不同的视频序列,每个具有30秒或I分钟的持续时间)。作为节目安排提供商与服务提供商之间的商业安排的一部分,某些广告内容块可以包含某个低优先级广告内容,诸如由国家电视网本身提供的广告。这允许地区或本地服务提供商以编码视频帧的序列的形式用其自己的本地或更具体地目标广告内容来覆写节目安排信号中的低优先级广告内容。此“广告插入”能力对于服务提供商而言是有利的,因为其能够提供具体地针对其客户基础的目标广告内容。
[0014]然而,编码视频帧的序列中的广告内容块的插入可能导致时间戳(PTS和DTS)中的不连续。
[0015]如上所述当编码视频序列内容被简单STB解码并按照接收的那样呈现时,时间戳中的不连续被隐藏。然而,当编码视频序列材料被PVR记录并在稍后被重放且用户希望使用特效播放能力时,可能观察到多个不期望效果。特别地,当在时间戳中存在不连续时,PVR选择正确的视频帧并将其发送到解码器是困难的。进一步地,暂停并随后在先前暂停帧处重新开始是难以实现的,因此在具有不连续时间戳的内容的情况下,是逐帧的缓慢前进。
[0016]更复杂的接收终端(具有PVR能力)服从服务提供商(诸如有线电视系统运营商)的受限控制,允许服务提供商将用于稍后插入的补充内容存储到正在被重放和显示的视频流中。例如,服务运营商可以使接收终端从因特网摄取广告材料以用于后续播出。在大多数情况下,以非实时速度来摄取此类材料。
[0017]已经建议,PVR应使用具有内容文件和索引文件的关系数据库将编码视频帧存储在大规模存储器件中。在此建议的实施方式中,PVR接收视频帧并向每个帧分配本地帧(local frame)时间戳(LFTS),将视频帧连同内容偏移位置(内容文件中的帧的记录编号)一起存储在内容文件中以识别内容文件中的帧的位置,并将LFTS连同PTS和偏移信息一起存储在索引文件中以识别该位置。在重放时,DVR使用PTS来从索引文件检索LFTS,并且然后使用所检索LFTS来确定内容文件中的有关视频帧的时间位置和偏移(从而按照接收的那样重新创建帧的序列),基于DTS将所检索的帧缓冲并解码,并基于PTS将已解码帧缓冲并呈现。
[0018]此已知DVR存在的一个问题是当插入了广告时,广告的帧具有其自己的PTS值序列,因此在序列中存在从节目的开头开始的中断。另一个是在特效播放期间,PTS值未连续地增加。
[0019]以这种方式使用本地帧时间戳不是最佳的,因为PTS不连续可能由于PTS值被多个节目重新使用和不同视频流的交织而引起。
[0020]此外,这种方法在记录以非实时速度发生时是没有帮助的,如上文所讨论的,因为LFTS值基于机顶盒中的操作系统时钟的时钟周期(clock tick)而不是基于视频流的实际时间。因此,基于LFTS值的时间位置可能不是准确的。

【发明内容】

[0021]根据本文公开主题的第一方面,提供了一种处理由数字数据流传送的编码视频帧的序列的方法,其中,每个帧表示图像,该方法包括a.在记录设备处接收编码视频帧的序列,b.确定序列的第i个编码帧与序列的第(i+Ι)个编码帧的呈现之间的帧间隔,c.在记录设备处,计算用于第i个编码帧的流时间戳,以及d.在记录设备处,基于用于第i个编码视频帧的流时间戳和在步骤b中确定的帧间隔来计算用于第(i+Ι)个编码视频帧的流时间戳。
[0022]根据本文公开的主题的第二方面,提供了一种修改由帧的序列组成的数字数据流的方法,其中,每个帧表示图像且包括指定用于帧的呈现时间戳值的数据字段,该方法包括
a.基于标称帧速率用帧间隔值将变量Int_fr初始化;b.接收第一帧并读取该帧的呈现时间戳值,向变量PTS分配第一帧的呈现时间戳值,向变量Clock_start分配变量PTS的值用于基于呈现时间戳来表不第一巾贞的时钟时间,向变量Clock_pts分配变量PTS的值用于基于呈现时间戳来表示帧的时钟时间,向变量ST*分配值零用于表示感兴趣的流时间戳;
c.接收下一个帧并读取所述下一个帧的呈现时间戳值,向变量PTS分配所述下一个帧的呈现时间戳值,向变量Diff分配值(PTS-Clock_pts),向变量Clock_pts分配值PTS,并向变量ST*分配值(ST*+Int_fr);以及d.测试在所述下一个帧与前一帧之间是否存在呈现时间戳值的不连续,并且如果存在的话,向变量ST_dis*分配值ST*,用于表示呈现时间戳中的不连续点处的感兴趣流时间戳的值,并向变量Clock_start分配值PTS并使用ST*的值作为索引将所述下一个帧存储在数据库中。
[0023]根据本文公开的主题的第三方面,提供了一种用于处理由数字数据流传送的编码视频帧的序列的视频记录设备,其中,每个帧表示图像,该视频记录设备具有用于接收数字数据流的输入端,并包括计算机器,其被编程为执行步骤:a.确定序列的第i个编码帧与序列的第(i+Ι)个编码帧的呈现之间的帧间隔,b.计算用于第i个编码帧的流时间戳,以及
c.基于用于第i个编码视频帧的流时间戳和在步骤b中确定的帧间隔来计算用于第(i+1)个编码视频帧的流时间戳。
[0024]根据本文公开的主题的第四方面,提供了一种包含软件的非临时计算机可读存储介质,该软件在被计算机器读取并执行时接收由数字数据流传送的编码视频帧的序列,其中,每个帧表示图像,该软件使计算机器执行一种方法,该方法包括a.确定序列的第i个编码帧与序列的第(i+Ι)个编码帧的呈现之间的帧间隔,b.计算用于第i个编码帧的流时间戳,以及c.基于用于第i个编码视频帧的流时间戳和在步骤a中确定的帧间隔来计算用于第(i+Ι)个编码视频帧的流时间戳。
【专利附图】

【附图说明】
[0025]为了更好地理解本发明,并且为了示出如何可以将其付诸实施,现在将以示例的方式对附图进行参考,在所述附图中:
[0026]图1是接收终端的示意性框图,
[0027]图2是在编码视频帧的序列的记录期间由图1中所示的接收终端执行的算法的流程图,
[0028]图3是在记录序列的重放期间由图1中所示的接收终端执行的算法的流程图,以及
[0029]图4是可以用来实现图1中所示的接收终端的计算机的示意性框图。
【具体实施方式】
[0030]参考附图的图1,被实现为PVR的接收终端接收数字数据流,该数字数据流传送根据MPEG-2视频压缩算法编码的视频帧的序列。该终端包括接收器10、大规模存储器20以及视频解码器30。接收器接收由服务提供商提供的比特流并恢复编码视频帧的序列。读/写控制器40将视频帧写入由大规模存储部实现并被组织为关系数据库的存储器中,该关系数据库包括内容表和索引表。读/写控制器实现时间戳算法,其唯一地识别每个视频帧并为接收序列中的每个视频帧生成时间戳。这允许从存储器读取视频帧,以便按照正确的顺序解码和呈现,而与PTS中的不连续无关。
[0031]图2图示出时间戳算法的流程图。通过向变量Int_fr分配初始值而初始化该时间戳算法(步骤100),该变量Int_fr表示视频帧的帧间隔。该初始值是根据帧速率的缺省值计算的。假设每秒60巾贞的巾贞速率,分配给Int_fr的初始值是16.6667ms。随后当接收到B巾贞时可以调整分配给Int_fr的值,如下面详细地讨论的。该算法向变量Int_min分配15ms的值(巾贞间隔的最小值)并向变量TOL (公差)分配3*Int_fr的值。
[0032]在初始化之后,时间戳算法从接收器接收视频帧的序列的第一帧的呈现时间戳(步骤110)并将此值分配给变量PTS。连续帧的序列中的第i个帧的呈现时间戳是表示在序列开始处从初始值开始的90kHz时钟的时钟周期的数目的33位数(一般地将不会是零)。
[0033]流时间戳也被视为表示90kHz时钟的时钟周期的数目的33位数。在步骤110中,该算法向变量ST* (感兴趣的流时间戳)分配值零,表示流时间戳对于序列的第一帧而言从零开始。该算法还向变量ST_dis* (呈现时间戳中的不连续点处的感兴趣的流时间戳)分配值零。该算法将PTS的时钟值分配给变量Clock_start (基于呈现时间戳的第一帧的时钟时间)和变量Clock_ptS (基于呈现时间戳的当前帧的时钟时间)两者。Clock_start因此表示正在记录的序列的第一帧的呈现时间戳。
[0034]在步骤120中,该算法接收下一个帧并将当前帧的呈现时间戳分配给变量PTS且将值(PTS - Clock_pts)分配给变量Diff。因此,变量Diff表示当前帧的呈现时间戳的时钟值与前一帧的呈现时间的时钟值之间的差。请注意,编码帧正常地被按照顺序Fl (I)、F4 (P)、F2 (B)、F3 (B)等发送,如果在帧的呈现时间戳中不存在不连续,则用于帧F4、F2和F3的Diff的值的序列将是+3*帧间隔、-2*帧间隔以及+1*帧间隔。
[0035]该算法还将变量Clock_ptS的值更新成用于当前帧的值PTS,使得其将可用于计算用于下一个帧的Diff,并将值(ST*+Int_fr)更新成变量ST*,从而存储最新的ST*。因此,用于当前巾贞的流时间戳等于前一巾贞的流时间戳加巾贞间隔的即时提供(improvised)的值Int_fr。
[0036]假设无呈现时间戳的绕回(其将在下面讨论),算法的执行转到判定框130,在判定框130处,该算法测试Diff的绝对值是否小于或等于T0L。由于TOL等于帧间隔的三倍,如果测试评估为真,则我们假设在呈现时间戳中不存在不连续;否则存在不连续。
[0037]在不连续的情况下,在步骤140中,算法用用于当前帧的ST*的值来更新变量ST_dis*,并用用于当前帧的PTS的值来更新变量Clock_start。以这种方式,变量ST_dis*存储在呈现时间戳中的不连续之后的第一帧的流时间戳的值,并且变量Cl0ck_Start存储呈现时间戳中的不连续之后的用于第一帧的呈现时间戳。由此标记记录流中的不连续点以用于后续计算。
[0038]在步骤150中,该算法将帧信息(诸如呈现时间戳、相对于视频流的开始的帧偏移以及相对于当前GOP的开始处的I帧的帧偏移)和当前帧的流时间戳存储在索引文件中。读/写控制器将当前帧的实际视频帧数据和内容偏移值存储在内容文件中。
[0039]如果在呈现时间戳中不存在不连续,则执行前进至判定框160,其中,测试帧类型以确定当前帧是否是参考帧。如果当前帧不是参考帧,则算法确认(框170)帧是B帧,并检查(框180) B帧标志是否被设定为真。
[0040]如果B帧标志是真的,指示前一帧是B帧,则所述算法检查(步骤190) Diff是否大于Int_min。如上所述,Diff等于当前帧的呈现时间戳与前一帧的呈现时间戳之间的差。在表现很好的序列中,B帧始终被按顺序接收,并且作为B帧的两个相邻帧之间的帧间隔直接反映序列的当前帧速率,即使在变化帧速率的情况下,如在2:3高清(电视电影)视频中发生的。Diff因此是当前巾贞间隔的可靠值。如果Diff大于Int_min,则该算法将Int_fr更新成Diff的当前值。该算法还将TOL更新以反映Int_fr的已更新值。因此,该算法重复地计算最当前的即时提供的巾贞间隔Int_fr,其被连续地更新(一般地每四个巾贞),使得当接收到下一个帧时,所使用的Int_fr的值在步骤120中是准确的以更新ST*。该算法将帧信息和关联ST*值写入索引文件(步骤150)。
[0041]如果当前帧是B帧且框180确定B帧标志是假,指示前一帧不是B帧,则该算法将B帧标志设置成真(框200),并且将帧信息和关联ST*值写入索引文件(步骤150)。
[0042]如果框170确定当前帧不是B帧,则算法将B帧标志重置为假(框210),并将帧信息和关联ST*值写入索引文件(步骤150)。
[0043]如果框160确定帧是参考帧,则算法检查DifT是否大于Intjnin (步骤220),并且如果是这样,则将ST*调整成(Clock_pts - Clock_start+ST_dis*)。如果在序列中不存在前一不连续,则ST_dis*将是零,并且Clock_start将基于呈现时间戳而等于第一巾贞的时钟时间。因此,ST*将被调整成Clock_pts的值,偏移Clock_start的值。如果存在前一不连续,ST_dis和Clock_start将反映最新不连续之后的第一巾贞的值。以这种方式,ST*被动态地调整,使得呈现时间戳中的不连续并不影响ST*的值的演进。由于帧是参考帧,所以算法将B帧标志重置为假。该算法将帧信息和关联ST*值写入索引文件(步骤150)。
[0044]如果呈现时间戳在编码视频帧的序列的开头处以零开始,则其将延续24小时以绕回至零。序列长到足以使这一点发生的可能性是非常小的。然而,呈现时间戳不一定以零开始,并且因此必须检查(框230)用于当前帧的呈现时间戳是否已从用于前一帧的PTS绕回,并且如果是的话,通过从用于当前帧的PTS的值加PTS的最大值的和减去前一帧的PTS的值来调整Diff的值(框240)。
[0045]将认识到的是,随着序列被记录,流时间戳贯穿整个序列从零开始单调地增加,没有重复,并且增量严格地基于当前帧间隔。由于流时间以零开始,所以在记录期间发生绕回的可能性实际上是不存在。
[0046]在重放时,读/写控制器执行图3中所示的算法。如图3中所示,在重放开始时,通过将变量Int_fr (帧间隔)设定成等于16.6667ms、将变量XS (特效速度)设定成等于1、将Int_fr设定成等于XS*Int_fr、将Int_min (最小巾贞间隔)设定成等于XS*15ms并将TOL(公差)设定成等于3*Int_fr来将算法初始化(步骤300)。该算法从用户接口接收(框310)特效速度的用户指定值。
[0047]在重放时将首先被解码的帧是不确定的。为了适当地选择要被解码的第一帧,该算法执行索引文件中的PTS值的查找,并基于流时间戳值来选择所记录帧的序列的初始段中的帧的PTS值,可回想起的是ST*在所记录的序列开头处以零开始。该算法将变量ST*设定成等于所选第一帧的流时间戳并将变量Clock_ptS (基于呈现时间戳的帧的时钟时间)设定成等于PTS。
[0048]在步骤320中,算法测试,并且在必要时更新XS的值且用下一个帧的呈现时间戳来更新PTS。该算法使用XS的已更新值来更新Int_fr的值并使用Int_fr的已更新值来更新TOL的值。该算法将值PTS-Clock_ptS分配给变量Diff,并用用于当前帧的PTS的值来更新 Clock_pts。
[0049]在判定框330中,该算法检查是否存在PTS值的绕回,如上文结合图2所述,并且如果是这样,则相应地调整(步骤340) Diff的值,同样如参考图2所述。该算法然后检查(框350)PTS值是否是连续的。如果值是连续的,则算法将ST*设定成等于ST*+Diff (步骤360);如果值不是连续的,则算法将ST*设定成等于ST*+Int_fr (步骤270)。读/写控制器将ST*的已更新值与存储在索引文件中的ST的值相比较,识别索引文件中的相应值(使用适当的规则),并使用该值来从内容文件读取编码视频帧数据。
[0050]如上所述,由参考图2所述的算法生成的流时间戳的值随着序列被记录在序列期间从零开始单调地增加。因此,使用参考图3所述的算法在重放期间生成ST的值确保用来从内容文件读取编码视频帧数据的ST的值在前进播放期间单调地增加,并且将在反向播放期间单调地减小,并且两个连续值之间的差将始终至少如最新的帧间隔那样大。
[0051]按照惯例,该解码器基于DTS将帧解码并基于PTS来呈现帧。
[0052]如前所述,呈现时间戳是33位数。在上述算法的实际实现中,优选的是使用32位数。相应地,每个算法从呈现时间戳中丢弃最低有效位,其等价于将PTS计算为45kHz时钟的时钟周期的数目。存储在索引文件中的PTS值是32位数。[0053]参考图4,可以将适当的接收终端实现为专用计算机50,包括以大体上现有架构配置的一个或多个处理器51、随机存取存储器52、只读存储器53、I/O设备54、用户接口 55和硬盘驱动器58。该计算机根据存储在非临时计算机可读介质中的程序进行操作,诸如硬盘驱动器58或⑶-R0M57,并被加载到随机存取存储器52中以用于执行。该程序由指令组成,使得当计算机接收表示根据MPEG-2算法编码的视频帧的序列的比特流时,通过包括在I/O设备54中的适当接口,计算机向适当的缓冲器分配存储器并利用其他适当资源和功能来执行上文被描述为由接收终端执行的各种操作。
[0054]本领域的技术人员将认识到的是程序可能不是利用CD-ROM驱动器从CD-R0M57直接加载到随机存取存储器中的,并且一般地,程序将被以要求从CD-R0M57将程序安装在硬盘驱动器58上的形式存储在⑶-ROM或其他分发介质上。
[0055]将认识到的是在本文中主张的权利要求的主题不限于已经描述的特定实施例,并且在不脱离在所附权利要求中定义的主题的范围的情况下可以对其进行修改,如根据现行法律的原则所解释的,包括等价物的准则或将权利要求的可实施范围扩大至超过其字面范围的任何其他原则。除非上下文另外指示,权利要求中对要素的实例的数目的引用(假设其对是一个实例或不止一个实例的引用)至少要求该要素的实例的所述数目,但是并不意图从权利要求的范围排除具有该要素的比所述的更多的实例的结构或方法。当在权利要求中使用时,在非排他性意义上使用词语“包括”或其派生词,其并不意图排除要求保护的结构或方法中的其他要素或步骤的存在。
【权利要求】
1.一种处理由数字数据流传送的编码视频帧的序列的方法,其中,每个帧表示图像,该方法包括: a.在记录设备处接收编码视频帧的序列, b.确定所述序列的第i个编码帧与所述序列的第(i+Ι)个编码帧的呈现之间的帧间隔, c.在所述记录设备处,计算用于第i个编码帧的流时间戳,以及 d.在所述记录设备处,基于用于第i个编码视频帧的所述流时间戳和在步骤b中确定的所述帧间隔来计算用于第(i+Ι)个编码视频帧的流时间戳。
2.根据权利要求1所述的方法,包括: e.将第(i+Ι)个编码视频帧和用于第(i+Ι)个编码视频帧的流时间戳保存在关系数据库中。
3.根据权利要求2所述的方法,其中,每个编码视频帧包括指定用于所述帧的呈现时间戳的数据字段,步骤b包括基于用于所述序列的连续帧的呈现时间戳来确定即时提供的帧间隔,并且步骤e包括将所述呈现时间戳和所述流时间戳保存在索引文件中并将所述编码视频帧保存在内容文件中。
4.根据权利要求3所述的方法,包括基于流时间戳和呈现时间戳来从所述索引文件读取流偏移位置并基于所述流偏移位置从所述内容文件读取编码视频帧。
5.一种修改由帧序列 组成的数字数据流的方法,其中,每个帧表示图像且包括指定用于所述帧的呈现时间戳值的数据字段,该方法包括: a.用基于标称帧速率的帧间隔值将变量Int_fr初始化; b.接收第一帧并读取该帧的呈现时间戳值,向变量PTS分配所述第一帧的呈现时间戳值,向变量Cl0ck_Start分配所述变量PTS的值用于基于呈现时间戳来表示所述第一帧的时钟时间,向变量Clock_ptS分配变量PTS的值用于基于呈现时间戳来表示帧的时钟时间,向变量ST*分配值零用于表示感兴趣的流时间戳; c.接收下一个帧并读取所述下一个帧的呈现时间戳值,向变量PTS分配所述下一个帧的呈现时间戳值,向变量Diff分配值(PTS-Clock_pts),向所述变量Clock_pts分配值PTS,并向所述变量ST*分配值(ST*+Int_fr );以及 d.测试在所述下一个帧与前一帧之间是否存在呈现时间戳值的不连续,并且如果存在的话,向变量ST_dis*分配值ST*用于表示呈现时间戳中的不连续点处的感兴趣的流时间戳的值,并向变量Clock_start分配值PTS,并使用ST*的值作为索引将所述下一个帧存储在数据库中。
6.根据权利要求5所述的方法,其中,所述帧序列由P帧、I帧和B帧组成,步骤a还包括用基于所述标称帧速率的最小帧间隔值将变量Intjnin初始化,并且所述方法还包括如果在所述下一个帧与所述前一帧之间不存在呈现时间戳值的不连续,则 测试所述下一个帧是否是P帧或I帧,并且如果是的话,则如果DifT的值大于Int_min,则将值(Clock_pts - Clock_start+ST_dis*)分配给变量 ST*。
7.根据权利要求5所述的方法,其中,所述帧序列由P帧、I帧和B帧组成,并且所述方法还包括如果在所述下一个帧与所述前一帧之间不存在呈现时间戳值的不连续,则测试所述下一个帧是否是B帧。
8.根据权利要求7所述的方法,还包括,如果所述下一个帧不是B帧,则将B帧标志重置为假。
9.根据权利要求7所述的方法,还包括,如果所述下一个帧是B帧,则测试B帧标志是否被设定为真。
10.根据权利要求9所述的方法,还包括,如果所述B帧标志未被设定为真,则将所述B帧标志设定为真。
11.根据权利要求9所述的方法,其中,步骤a包括向变量TOL分配值,并且步骤d包括测试Diff的绝对值是否超过TOL的值,并且所述方法还包括,如果所述B帧标志被设定为真,如果Diff大于Int_min,则将值Diff分配给Int_fr,并且将值3*Int_fr分配给所述变量 TOL0
12.一种用于处理由数字数据流传送的编码视频帧序列的视频记录设备,其中,每个帧表示图像,所述视频记录设备具有用于接收所述数字数据流的输入端,并包括计算机器,所述计算机器被编程以执行以下步骤: a.确定所述序列的第i个编码帧与所述序列的第(i+Ι)个编码帧的呈现之间的帧间隔, b.计算用于第i个编码帧的流时间戳,以及 c.基于用于第i个编码视频帧的所述流时间戳和在步骤b中确定的所述帧间隔来计算用于第(i+Ι)个编码视频帧的流时间戳。
13.根据权利要求12所 述的视频记录设备,其中,所述计算机器被编程以执行进一步的步骤: d.将第(i+Ι)个编码视频帧和用于第(i+Ι)个编码视频帧的所述流时间戳保存在关系数据库中。
14.根据权利要求13所述的视频记录设备,其中,每个编码视频帧包括指定用于所述帧的呈现时间戳的数据字段,由所述计算机器执行的步骤a包括基于用于所述序列的连续帧的呈现时间戳来确定即时提供的帧间隔,并且步骤d包括将所述呈现时间戳和所述流时间戳保存在索引文件中并将所述编码视频帧保存在内容文件中。
15.根据权利要求14所述的视频记录设备,其中,所述计算机器被编程以基于流时间戳和呈现时间戳从所述索引文件读取流偏移位置,并且基于所述流偏移位置从所述内容文件读取编码视频帧。
16.—种包含软件的非临时计算机可读存储介质,该软件在被计算机器读取并执行时接收由数字数据流传送的编码视频帧序列,其中,每个帧表示图像,该软件使所述计算机器执行一种方法,所述方法包括: a.确定所述序列的第i个编码帧与所述序列的第(i+Ι)个编码帧的呈现之间的帧间隔, b.计算用于第i个编码帧的流时间戳,以及 c.基于用于第i个编码视频帧的所述流时间戳和在步骤a中确定的所述帧间隔来计算用于第(i+Ι)个编码视频帧的流时间戳。
17.根据权利要求16所述的计算机可读存储介质,其中,所述软件使所述计算机器被编程以执行进一步的步骤:d.将第(i+1)个编码视频帧和用于第(1+1)个编码视频帧的流时间戳保存在关系数据库中。
18.根据权利要求17所述的计算机可读存储介质,其中,每个编码视频帧包括指定用于所述帧的呈现时间戳的数据字段,并且所述软件使所述计算机器执行一种方法,其中,步骤a包括基于用于所述序列的连续帧的呈现时间戳来确定即时提供的帧间隔,并且步骤d包括将所述呈现时间戳和所述流时间戳保存在索引文件中并将所述编码视频帧保存在内容文件中。
19.根据权利要求18所述的计算机可读存储介质,其中,所述软件使所述计算机器执行一种方法,其中,所述计算机器基于流时间戳和呈现时间戳从所述索引文件读取流偏移位置,并且基于所述流偏移位置从所述内容文件读取编码视频帧。
【文档编号】H04N21/43GK103535027SQ201180061468
【公开日】2014年1月22日 申请日期:2011年12月15日 优先权日:2010年12月20日
【发明者】穆拉利德哈兰·纳拉亚南, 克里斯托弗·S·德尔索尔多, 瑟亚·P·马赫斯瓦拉姆, 克里希南·普拉萨德·潘杰, 埃内斯特·G·施米特, 亚希·张 申请人:通用仪表公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1