4. 精确帧定位
帧定位是精确编辑的基础,而精确的帧定位来自于精确的帧同步。在ES上实现逐帧精确的编辑,首要问题是实现精确帧的同步。
如前所述,装填后的ES变成仅含有1种性质的PES包,或视频ES,或音频ES。以视频为例,图7表明了在PTS/DTS标示的独立同步时间基准指示下,顺序装填再顺序读出,形成连续ES的
I1P4B2B3P7B5B6(N=7)GOP组帧顺序。由于PES的数据分组是可变长度的数据包,但它的最大包数据容量为65526Byte。因此,在码流快编中必须为每个AU准备必不可少的缓存空间。
如图7所示,PTS表明图像帧出现在目标解码器(System Target Decoder,STD)的时间,DTS表明将存取单元全部字节从STD的ES解码缓存器移出的时刻。当以PTS/DTS为独立时间基准,定位和标志PES的AU起始点后,对UA依次组成图像帧序为I1P4B2B3P7B5B6 I10B8B9的ES。对于I、P帧而言,PES的图像帧序为I1P4B2B3P7B5B6I10B8B9,应该P4比B2、B3在先,但显示时P4一定要比B2、B3在后,这就必须重新排序。在PTS/DTS时间标志指引下,将P4提前插入数据流,经过缓存器重新排序,重建视频帧序I1B2B3P4B5B6P7B8B9I10。显然,PTS/DTS是表明确定事件或确定信息,并以专用时标形态确定事件或信息的开始时刻。
值得注意的是,虽然在PES中应该每个I、P、B帧的包头都具有一个PTS和DTS,但由于B帧的解码时间和显示时间存在一致性,因而对B帧而言,PTS与DTS具有相同作用,无须DTS,只须PTS。音频数据包也很有特点,虽然它可以含有多个存取单元,但由于它必须按照时间顺序传送,所以音频包头中也不含DTS,只有1个PTS。
由此可见,PTS/DTS不仅直接关联帧定位,而且直接关系到码流快编的帧精确编辑。为此,码流快编的帧定位着重处理以下几个帧序特征:
* 当处理某个含有1个I帧的存取单元时,在其包头文件中应有DTS和PTS,且2个标记之间的时间间隔为1个图像周期,那么在双向编码时的P帧应在I帧之后,在包头文件中就应有1个DTS和1个PTS,而这2个标记之间应存在3个图像周期的间隔,这样才能插入2个B帧。
* 当前处理IPBB时,I帧应延迟1个图像周期,P帧应延迟3个图像周期,而2个B帧则无需延迟,于是,最后的显示顺序就成为了IBBP帧序。
* 若需要改变GOP结构时,例如在I与P帧之间需要存在更多的B帧,则需调整B帧DTS与PTS之间的时间间隔。
* 当处理IPBB序列后,必在第1个B帧之前先对I和P帧进行解码,但每次只能对一帧图像进行解码,因此需要先解I帧并暂存后,待P帧被解码时,随即读出I帧,而后再读B帧。
* 在处理包头时,对PTS/DTS指示的某图像帧,特殊关注是否只有1个PTS时间标记,是否含有PTS和DTS的2个时间标记,以便快速确认I、P与B帧,以及音频包。
当作为编辑节目源的MPEG-2 TS被拆包以后,以PTS/DTS实现视频帧的精确定位,就能以帧精确的剪切编辑实现码流快编功能,同时,也能以I1P4B2B3P7B5B6I10B8B9帧序显示
I1B2B3P4B5B6P7B8B9I10帧序。那么,在此基础上嫁接现成的MPEG-2 IBP非线性编辑的成熟技术,既不需要高价的采集编码卡,也不需要上下载的转码,从采集、转码、拆包剪切,到特技处理、打包上传,一气呵成地构成了码流快编系统。

