一种直通音频与视频重同步的设计与应用

2021-08-10 02:25袁金保黄化吉杨雪松
电视技术 2021年6期
关键词:转码直通音视频

袁金保,黄化吉,杨雪松

(伟乐视讯科技股份有限公司,广东 惠州 516003)

0 引 言

在数字电视前端的转码系统中,经常存在3种需要扩展音频升级的场景:场景1,新发布的音频格式,随着计算机技术的快速发展,不断有新的音频编码格式与标准出现,如我国的DRA音频标准;场景2,客户希望保持转码前的音频输出而不做任何修改;场景3,转码系统规格限制,无法实现某些音频格式的转码。为解决这3种场景的转码系统音频问题,本文设计一种直通音频方案,对音频实施直通,并与转码后的音视频进行重同步,从而使原转码系统轻松实现音频格式的扩展升级。

1 转码系统直通音频设计与实现

1.1 编解码端音视频同步原理

图像和声音数字化后,数据量巨大,随之出现了各种压缩标准和算法。目前使用最广泛的压缩标准是MPEG2,压缩后的数据通常用TS流(Transport Stream)格式传送。整个音视频系统按照处理先后顺序大致可以分为编码、传输及解码3个部分。如把传输部分理想化,则可忽略掉传输部分的影响,将系统进一步简化为编码和解码2个部分。

MPEG2协议规定,编码端定期将本端的时间信息插入到TS流的固定位置,起到为解码端报时的作用,需要接收端“对表”同步。如图1所示,编码器中有一个27 MHz的系统时钟,用该时钟产生一个PCR计数器,计数器由PCR_Ext和PCR_Bas组成。PCR_Ext为27 MHz时钟进行模300计数分频,即计数器从0累加299,再回到0,获得9位二进制值。PCR_Ext每计数到299时,进行模233计数,获得33位计数值PCR_Bas。在每个新编码的PES分组中,在其头信息里插入当前的PCR_Bas作为PTS/DTS值,表示该包数据是在x点x分x秒打包;除了在PES头中插入PTS/DTS,按照协议要求,通常每隔10~100 ms需要把PCR_Bas值插入到TS数据流中一次。

图1 编码端插入PTS和PCR时戳

解码端也有一个和发送端类似的PCR时钟计数系统,如图2所示。接收端从接收到的流中解析出PCR包,与本地的PCR计数比较。如果有偏差,就会调整本地的27 MHz时钟,从而使本地PCR去同步跟踪编码端(信源端)的PCR,以此保证解码端27 MHz时钟与编码端的27 MHz时钟一直保持在一定的偏差内。解码器根据本地的PCR与数据包中的时间标签PTS对比,就可在正确的时间进行播出。

图2 解码端PCR时戳对表

1.2 转码系统时钟方案设计

解码器根据本地时钟的PCR计数值与待解码TS流中的PCR比对,根据比对结果动态调节本地时钟,以此达到解码端时钟与TS流源端(编码端)时钟同步。因此对于这种机制的解码器,解码端时钟会跟踪编码端时钟,其输入时钟无需特殊处理。

为了简化设计,市面上很多解码器并没有根据PCR来动态调节时钟以跟踪编码端,而是以音频作为参考进行音视频解码。由于未跟踪源端PCR来调节本地时钟,解码器长时间运行后,就会出现视频Buffer上溢或下溢。对此,当Buffer上溢时,解码器进行丢帧处理;而当Buffer下溢时,则进行帧重读处理,以此保证解码的正常运行。利用人眼视觉的不敏感性,长时间内丢一帧/重读一帧处理,并不会影响观看效果。但从实际项目运行来看,该种方案在运行一段时间后会出现音视频解码异常的情况,停止几分钟之后自动恢复。为保持系统长时间稳定运行,需要采用解码端跟踪编码端时钟的根本性解决方案。

如图3所示,采用IDT高精度可编程时钟芯片IDT5P49V5901实现解码器时钟跟踪信源时钟,其实现原理实际如图2所述。具体过程为:TS_PCR_EXACT模块提取待解码TS流的PCR,LOCAL_PCR_CNT模块为解码时钟进行本地PCR计数。ADJUST_CTRL模块负责比较TS流的PCR和本地PCR计数,得到偏差。之后通过I2C总线控制IDT5P49V5901进行时钟高精度调整。

图3 时钟跟踪调整框图

1.3 转码系统直通音频设计与实现

解码端实现跟踪源端时钟后,即可保证转码系统长时间不偏离源端时钟稳定运行,才具备直通音频实施的系统基础。直通音频设计实现如下图4所示,主要包含2部分:Transcode System为原来的转码系统;BypAud_System为直通音频部分。

图4 直通音频设计实现

该设计中主要模块功能如下。

(1)TS_SRC为待转码的TS流,整个TS流会送给原有转码系统实施转码,转码后的输出TS流为TS_ENC。

(2)Tbase_Gen模块是一个时基产生模块,从TS_SRC中获取节目PCR包并取出其PCR值作为计数器的初始值,以27 MHz时钟按照PCR计数器的规则进行实时计数,此处计为T1。

(3)Aud_Filte模块负责从TS_SRC中过滤出需要直通的音频TS包。

(4)Aud_Add_Tbase模块负责将Tbase_Gen模块产生的计数值标记到直通音频包的自定义包头中,以此作为该直通音频包缓存入BUF的时间点,此处计为T2。

(5)Byp_Aud_Buf负责缓存直通音频。

(6)Aud_Out_Ctl负责控制直通音频的输出。假设TS_SRC进入原转码系统,转码完成后到从TS_ENC输出,其延时为Tdelay。在设计中,预先从Byp_Aud_Buf中读取直通音频的包头,获取包头中标记的存入缓存的时间点T2,并在获取T2的时刻,锁存Tbase_Gen当前的时刻值T1_byp。当T1_byp-T2≥Tdelay,表示直通音频包在缓存中滞留的时间已达到Tdelay,此时该直通音频包可以输出,从而保证直通音频包的物理到达时间和编码后的音视频包匹配。

(7)Pcr_Pts_Dts_Adj模块负责修改编码后TS流的PCR、PTS及DTS,从而保证音视频同步。因为直通音频的PTS是未做修改的,所以TS_ENC需要与TS_SRC建立关系。

当TS_ENC中的PCR包到达时刻,锁存Tbase_Gen当前的计数值,即当前时刻值T1_enc,同时以PCR_enc为计数器初始值,以27 MHz时钟按照PCR计数器的规则进行实时计数,此处计为T3。由于直通音频的PTS未做修改,PCR修正按照如下公式:

由式(1)可知,TS_ENC修正后的PCR值为TS_SRC的PCR作为时基参考计数减去Tdelay得到,其关系可以保证PCR和PTS的同步关系。

当TS_ENC中的PTS、DTS到达时刻,分别将T1和T3的计数值锁存下来,计为T1_pts/T3_pts和T1_dts/T3_dts。则PTS和DTS修正按照如下公式:

1.4 调试与验证

由前文可知,本系统唯一不确定的参数值为Tdelay,该值为转码系统的延迟值。在不同的转码系统中,其值是不一样的。为此,在调试时,可以在终端连接分析仪,根据分析仪上报的PCR/PTS/DTS之间的关系,调试Tdelay值,直到满足标准要求;如果不具备分析仪,则可以通过终端解码,根据听觉,动态调整Tdelay值,直至音视频同步。

2 结 语

本文分析了音视频同步的关键技术点,并详细介绍用FPGA实现解码端跟踪信源时钟的方案以及直通音频的设计实现。所述方案已成功应用到伟乐公司DMP等媒体平台设备中。实践证明该系统长时间稳定运行,均能保证音视频同步,为原转码系统实现音频规格的扩展升级提供了很好的解决方案。

猜你喜欢
转码直通音视频
浅析西藏卫视《直通藏晚》的叙事结构
江苏兴化:培训提级从课堂直通赛场
视频转码技术在广播电视中的应用研究
3KB深圳市一禾音视频科技有限公司
基于Hadoop的流媒体转码系统设计
WIFI音视频信号传输的关键问题探究
基于IPTV点播业务的视频分段式转码方案的研究与应用
高速公路整合移动音视频系统应用
2015年直通苏州世乒赛选拔赛樊振东技战术分析
WOOK:用App让中国品牌直通印尼