• 谈谈数字电视中的音画不同步问题


    关键词:音画不同步 MPEG-2 PCR DTS PTS 编码器 解码器

    随着我国数字电视的迅猛发展,以及城市广电网络数字化改造的推进,越来越多的人们开始采用机顶盒来收看数字电视节目。但在通过机顶盒收看电视节目的过程中,观众有时会发现一些音画不同步的现象。这也引起了我们的注意。

    现象及测试

    贵阳市在2007年底基本完成了广电网络数字化改造,贵州电视台的节目也都进入了数字网络传输。在进入数字网以后,我们发现,我台的几套节目在有些地区出现了音画不同步的现象,特别是卫视频道和百姓频道在播报新闻时尤其明显。为了弄清楚问题出现在哪里,我们决定,在我台节目的整个传输路径,作一个唇音同步测试。用来做测试的设备是泰克公司的WFM7120,在做音/视频延时测量时,还需要通过TG700 DVG7产生一串短促的彩条视频信号,在这组视频信号中嵌入音频序列,其间隔为5s,将这样的信号送入被测系统,最后将信号送到WFM7120里以测量音、视频之间的定时差。  

    播控中心内部测试

      

    如图1所示,为了测量在电视台系统内部是否存在音/视频时延差,我们利用检修时间将TG700产生的测试信号录入播出硬盘,通过硬盘播放,以及将测试信号分别输入到延时器和帧同步模块后,在一个频道上播出,然后我们在传送部将信号传到网络公司的编码器之前,对这三路信号进行测量。测量结果显示,这三路信号的音/视频时延差均不超过12ms,即不够一场,表明信号在播控中心不存在音画不同步问题。  

    不同机顶盒的测试

      

    第二个测量点,我们选择了网络公司的前端机房。如图2所示,在这里,我们选取了现在国内使用的主要几个品牌的机顶盒做测试,将TG700的测试信号,通过原来我们在用的编码器编码后,插入我们现在在播的频道,然后在前端机房用机顶盒把电视信号解调出来。解出来的音/视频信号,再通过一台松下公司的D950录像机,把模拟的信号进行A/D和加嵌处理后,送到WFM7120进行测量。测量结果显示,这几种机顶盒的音/视频时延差表现不一,有的超前了150ms,有的滞后了300ms。这表明不同的机顶盒,对同样的数字电视信号进行解调、解码后保持音/视频信号之间的同步关系有不同的能力。  

    不同编码器的测试

      

    如图3所示,我们仍然用TG700信号发生器,对不同编码器进行测试,擦启用编码器、调制器和机顶盒构建了一个模拟的播出/收看环境。在这里,我们采用了不同品牌的几种编码器,对TG700的测试信号进行编码后,经过相同的调制器调制,再用同一个机顶盒把信号解出来,同样经过D950处理后送到WFM7120测量。最后测量的结果是,它们的音/视频时延差有的是30ms,有的则达到了300ms,表明了不同的编码器,对机顶盒最终收看信号的音/视频同步有较大影响。

    原因分析

    MPEG-2系统的定时原理

    目前,在我国的数字电视传输系统中, MPEG-2标准作为重要的音视频压缩标准,在对信号源端的节目信号压缩、编码、复用,以及接收端对信号的解复用和解码部分,得到了广泛的应用。而我们正在使用的数字传输系统,正是基于MPEG-2标准的系统。下面我们来看看MPEG-2的系统结构,如图4中所示。

    由图4中可看出,音视频信号在经过压缩编码器去掉冗余信息后,形成基本码流。这个基本码流并不能被直接存储或传送,还必须送入特定的打包器,把基本码流按一定的格式分成段落,并加入特定的标识字符,形成所谓的打包基本码流(PES)。PES包是长度不固定的音、视频数据包,再把音视频PES包,以及辅助数据送入传输子系统,分割成一个又一个长度固定为188b的小数据包,并通过时分多工复用形成单一的TS流,该TS流经过信道传输后到达接收端。

    众所周知,同步是实现电视正确显示的必要条件。对数字电视来说,由于在压缩编码过程中,利用缓存器对信号存储,复用器中信号的时间轴是变动的,加上数据冗余量大小的不同,压缩比也不同,因此时间轴变动很大,尤其是在帧组层处理中,B帧和P帧的顺序也发生了变化。所有这些,使得数字电视信号的同步,完全失去了原来序列的概念。实现同步的有效办法,就是在信号码流中,每经过一个规定的间隔加入一个时间标签。有了这个标签,就可以在接收端在显示之前的解码过程中,根据这个时间标签进行重新排序,重建在压缩编码之前图像的顺序,以及声音和图像之间的时间关系,从而实现图像同步及声音与图像同步。

    由图4还可看出,MPEG-2编码器中有单一的共同系统时钟STC (27MHz),此时钟用来产生指示音频/视频正确解码和显示时序的时间标签,同时,可用来指示在抽样瞬间系统时钟时间的瞬时值。该时钟由输入视频的行同步锁相,当输入是SDI信号时,由其时钟经10分频产生编码器的系统时钟。正是编码器中共同系统时钟的出现,以及解码器中时钟的重新生成和时间标签的正确使用,才为解码器中操作的正确同步提供了基准。为实现编解码器的时钟同步,在编码器中对STC系统时钟进行计数,每隔一定的传输时间,在经过选择的TS包的适应头中,传输该计数器的抽样值给接收机,作为解码器的节目时钟参考信号,既PCR。PCR有效位为42b,其中高33b为PCR_Base,是以27MHz时钟,经300分频后的时钟为单位的计数值,低9b为PCR_Extension,是以27MHz时钟为单位的计数值。除PCR外,解码时间标签DTS和显示时间标签PTS,也非常重要。它们与PCR_Base相似,也是以编码器27MHz的系统时钟,经300分频后为单位的计数值来创建的。其中,DTS用于指示解码器何时对接收的图像、音频帧进行解码,PTS用于通知何时显示已解码的图像帧。

    在使用双向编码时,对某一图像的解码,必须在其显示之前的一段时间内进行,这样它才能作为解码B帧图像的源数据。例如,图像的显示顺序是IBBP,但图像的传输顺序则是IPBB。MPEG参考模型认为解码是瞬间发生的,即解码、显示同时进行。对于音频帧和图像B帧来说,解码时间和显示时间是一致的,PTS与DTS相同,因此只要传输PTS。对于视频I帧和P帧来说,由于存在帧重新排序,解码时间和显示时间不一样,此时必须同时传送PTS与DTS。当解码器接收到IPBB图像序列时,它必须在解码第一个B帧图像之前,对I帧和P帧图像解码。解码器每次只能解码一帧图像,因此先对I帧图像解码并将其存储起来,待P帧图像被解码时,就输出显示已解码的I帧图像,随后才解码显示B帧图像。表1、2、3、4所示,是编码器输入、输出的图像顺序、各帧的PTS、DTS值,以及解码器对各帧图像的解码和显示顺序。

    表1中,13帧图像构成一个图像组,第1帧I帧采用帧内编码,第2、3B帧是由第1、4帧通过双向预测得到,第4帧P帧是由第1帧通过前向预测而得。编码器在编完第1帧后,先缓存第2、3帧图像,对第4帧图像进行编码,然后再对第2、3帧图像进行编码,依次类推,最后得到的编码输出顺序如表2所示。

    由表3和表4可看出,当解码器接收到某个含有一个I帧图像的存取单元时,在其文件数据包中应含有DTS与PTS,这两个标签的值之间的时间间隔为一个图像周期。在I帧图像之后是P帧,其文件数据包中也应有一个DTS和一个PTS,这两个标签的值之间的时间间隔是三个图像周期。然后是两个B帧,其文件数据包中只含有PTS。也就是说,I帧图像在解码后要延时一帧后才播放显示,在显示I帧时对第4帧P帧进行解码,但不播放显示,先缓存起来,当1I帧播放显示完后,立即解码显示2B帧,然后是3B帧,过后才显示缓存的4P帧,同时对7P帧进行解码并缓存,依次类推。可见,解码显示的图像顺序,与表1的图像输入顺序是一致的。

    解码器(机顶盒)的定时原理

    PTS和DTS只是一个33b的数值,如果没有PCR所代表的时间轴做参考,这个数值是没有意义的。为了保持正确解码,必须使编码器和解码器(机顶盒)的系统时钟保持锁定,即它们的频率保持一致,以及它们各自的计数器的初始值一致。

    解码器(机顶盒)中有一个频率为27MHz左右的压控振荡器(VCO),输出信号作为系统时钟送入计数器中产生当前的STC样值,它与PCR一样也是42b的一个数值。其中,高33b是以27MHz经过300粉频后的时钟为单位的计数值,低9b是以27MHz时钟为单位的计数值。当一个新节目到达解码器(机顶盒)时,解码器(机顶盒)从码流中获得PCR值,用其PCR_Extention值与当前STC的低9b位作比较,得到误差信号,再通过锁相环电路去调整压控振荡器,使解码器(机顶盒)的系统时钟频率,与编码器的系统时钟频率保持一致。从码流中依次获得各帧的PTS与DTS值,将其和当前STC值的高33b位作比较。如果DTS值大于STC值,则对码流进行缓存,同时监测STC值的变化,当STC值增大到与DTS值相等时,对该帧码流进行解码,当STC值与PTS值相等时,播放该帧。如果由于传输网络的缓冲延时抖动,当码流到达解码器(机顶盒)时,其PTS值已经小于STC值,则解码器(机顶盒)跳过这一帧,丢弃该帧数据。由于PTS和DTS是根据PCR值产生的,因此必须将获得的第一个PCR值,作为初始值去置位解码器(机顶盒)的STC计数器,使它们的值一样,否则,将导致时基不同,从而解码出错。音频与视频的处理相似,只是不存在时序重排的问题。图5所示是解码器(机顶盒)PCR工作原理图。

    音画不同步产生原因

    在实际应用中,有些编码器由于输入视频信号的时基不稳,导致其输出时钟发生抖动,帧同步的间隔不是40ms。这些编码器,在根据PCR和缓冲延时设定初始的DTS值后,每帧的DTS值,由上一个DTS加上一个固定值得到(该值可由如下计算而得:27MHz经300分频后为90kHz,PAL制电视每秒为25帧,由此,该值是90000/25=3600),并根据帧类型和GOP类型计算出PTS值。但这段时间PCR值并不是增加3600,导致DTS和PTS相对PCR变大或变小。有些解码器(机顶盒)没有采用压控震荡器,其系统时钟为固定的27MHz,只是用接收到的PCR值,初始化本地系统时钟计数器的值。编码器和解码器(机顶盒)之间不能保持严格的锁定,这样就可能导致解码器(机顶盒)丢帧。而有的解码器(机顶盒)在发生丢帧的情况后就不再严格按DTS和PTS解码显示,而是根据缓冲区的情况来解码,由于视音频编码的延时不一样,就可能导致音画不同步。

    此外,在从编码器到解码器(机顶盒)的传输过程中,由于存在着复用器、调制器等变延时缓存的环节,可能导致PCR包的传输延时不恒定,有大有小。如果不对PCR进行修正,也可能导致以上问题的发生。

    总结

    由以上分析可以看出,编码器和解码器(机顶盒)都有可能导致音画不同步的发生。我台在对各品牌的编码器进行测试后,选择了一家测试指标比较好的编码器,替换下原来的编码器,使得电视音画不同步的现象得到了较大改善。而网络公司在下一步引进机顶盒的工作中,也将加强对相关指标进行测试,以改善广大观众的收视质量。当然,在推进我国广播电视数字化的进程中,还需要我们广大电视工作者,以及各设备生产厂家的共同努力,才能最终取得圆满成功。

    (全文完)

  • 相关阅读:
    visual C sharp express from 360 free download
    Druid 在小米公司部分技术实践-博客-云栖社区-阿里云
    公司业务-猫眼知健康
    Sculptor
    可译网 —— 翻译可以更简单
    牛客网-专业IT笔试面试备考平台,最全C++JAVA前端求职题库,全面提升IT编程能力
    设置Redis的LRU策略
    springboot中使用aop技术
    elasticSearch的部署和使用
    jvm原理和代码运行的过程
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/4317960.html
Copyright © 2020-2023  润新知