开篇:润墨网以专业的文秘视角,为您筛选了一篇用于T—DMB电视节目转播的音/视频采集及同步设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
【摘要】利用USB模拟电视盒可以将闭路电视节目采集并编码为T-DMB节目并实现实时广播,本文主要研究USB电视盒的信号采集方法和节目编码中音/视频同步技术。
【关键词】T-DMB;USB电视盒;音视频同步1.引言
T-DMB是一种新兴的数字化多媒体广播系统,是目前实现移动数字多媒体节目接收性能最好的技术之一[1]。为了丰富T-DMB的节目来源,可以利用USB模拟电视盒将闭路电视节目转换为T-DMB节目从而构建出一套T-DMB电视转播系统。
T-DMB电视转播系统整体上分为T-DMB编码系统和T-DMB发射系统两部分,前者负责将闭路电视信号采集并编码为符合T-DMB标准的节目源,后者负责将编码好的T-DMB节目进行节目合成、信道编码等,然后广播出去。
在T-DMB编码系统中,如何将模拟的闭路电视信号采集为数字音/视频信号以及音/视频如何同步是该转播系统的关键所在,也是难点,本文主要介绍这两个模块的设计。
2.音/视频采集模块设计
图1所示为T-DMB电视转播系统的结构框图,由图中可知,T-DMB编码系统可以分为五个模块,其中音视频采集模块为第一个模块,其主要功能为通过USB电视盒采集电视节目的声音和图像信号,并通过USB接口传送至电脑。此模块采用基于DirectShow开发包的方式。
Directshow是微软公司开发的一套基于Windows平台的多媒体开发工具,是建立在组件对象模型(COM)的基础上,由许多模块化的组件(Filter)组成,每个Filter实现一个功能,由于Filter内部完成与硬件驱动程序的交互,所以应用程序开发者不需要直接和底层硬件打交道,应用程序开发者只需要调用或者编写合适的Filter就能控制电视盒的工作以及设置声音和图像采集参数。这样大大简化了在windows平台上开发多媒体应用程序的难度[2]。
本文的音/视频采集模块就是利用Di-rectShow来开发的。图2为音/视频采集模块的Filter流程图。
采集模块共有6个Filter组成,每一个Filter提供不同的接口和用以控制电视盒的相应硬件模块实现相应的功能。TridVid TvTuner Filter提供get_TVFormat()函数用控制电视盒的调谐模式,中国的电视制式为NAL,AutoTuner()函数用于自动搜台,可以通过编程调用此函数来切换节目。Tridvid TvAudio Filter提供Put_TvAudioMode()函数控制声道数和语言类别。TridVid Crossbar Filter是输入端口选择模块,用来选择接入的是模拟电视信号还是DVD信号,这里选择Video Tuner in和Audio Tuner in端口。Capture Filter是声音和图像采集模块,通过SetFormat()函数控制声音采集参数如下:采样频率48KHz,采样字长16bit,双声道;图像采集参数如下:图像格式YV12,像素320x240,采样字长16bit。Grabber001 Filter和Grabber Filter是缓存Filter,此模块是音视频同步的一个重要模块,每当采集到一帧声音或者图像时,就会先放入这里缓存,同步模块通过控制从此缓存中取数据的时间以及次序来进行音视频的同步编码。
这六个模块通过调用AddFilter()函数将其加入程序里,并使用Render()函数将其按图2所示连接起来,然后调用Run()函数,采集模块就开始工作了。模拟的电视信号就转换为数字的信号并且音/视频信号分别存入电脑内存中。
3.音/视频同步模块设计
音视频同步模块是系统中最重要的模块,主要功能包括:1)按照ISO/IEC 14496-1和ISO/IEC 13818-1标准进行音视频同步编码;2)码率控制。该模块输入数据为已编码好的音/视频帧,输出数据为188字节的MPEG-2 TS(transport stream)包。音/视频同步模块结构如图3所示。
3.1 同步编码
经过压缩后的音/视频数据以帧为单位进行同步编码。由上图可知,首先将音/视频帧进行同步层打包,为音/视频帧打上时间戳并生成SL包。时间戳采用DTS(decoding time stamp)、CTS(composition time stamp),分别表示解码时间和合成时间。再将SL包进行传输层打包,将PES包、PSI段及14496段经TS多路选择器生成TS包,在TS包自适应区中有另一重要参数PCR(program clock reference),提供解码时的参考时钟并校正接收端时钟[3-4]。
同步编码中时间戳和参考时钟是最重要的参数,在编码器端和解码端,它们通过计数来达到间接计时的目的。PCR的作用是在解码器切换节目时,提供对解码器PCR计数器的初始值,以让该PCR值与PTS、DTS最大可能地达到相同的时间起点,用于音视频的同步显示。
T-dmb标准中,时间戳的时间精度为90kHz,如果程序中用计数器来实现的话是很难做到的。由于电视盒的视频帧率和音频采样率可以手动设置,如果将视频帧率设置为为25fps,折算成时间戳为3600;音频采样率设置为为48kHz,每帧1024采样点,折算成时间戳为1920。可以发现音视频帧对应的时间戳增量都是整数,因此可不使用计数器,而只要在每一帧后直接增加相应的时间戳增量即可(考虑到解码也需要时间,CTS要比DTS大一些)。T-DMB标准中对PCR要求的时间精度更高,达到27MHz,这种精度的计数器用软件几乎是不可能实现的。通过查阅标准发现,PCR在传输时传输时是分为PCR_base和PCR_ext两部分,PCR_ext以系统时钟频率27MHz为计数单位,其作用是修正解码器的系统时钟,使之和编码器一致;由于该部分精度太高,目前无法实现。且若忽略其不计,最大误差也不足0.01ms,且这个误差是不累加的,因此可只考虑PCR_base[5]。
T-DMB标准规定PCR的循环插入周期不超过100ms,本文视频帧率设置为25fps,视频帧的周期为40ms,两帧为80ms,因此可在传输图像数据的TS包中,每两帧插入载有PCR的自适应区,且PCR_base等于该帧的DTS。
3.2 码率控制
虽然音/视频编码出的平均码率恒定,但是为了节省码率同时保证画质,编码出来的每一帧视频的数据大小肯定不是恒定的,导致数据实时码率不稳定,因此需采用码率控制技术,将实时码率保持稳定以保证节目的流畅。
本文采用的码率控制方法为在编码端插入空包。通过周期性检测码率,并对检测结果进行统计,从而确定是否插入及插入多少个空包,利用空包控制码率。具体实现为:首先确定需要的码率为384kbit/s,检测周期T为1s,即每编码25个视频帧检测一次。假设检测到一个周期内发送了m个TS包,则码率为:
即一个TS包在1s内的码率为1.504kbit/s。设为btr与384之间的差值,则:,则需要添加的空包数N的值为:
该方法方便地调控了发送过程中的实时码率,使平均码率保持在384kbit/s左右,且容易用代码实现。
4.测试
在把本文的两个模块集成进整个T-DMB编码系统之后,在本实验室已成熟的DAB发射系统和成熟的T-DMB播放器基础上,对本系统进行了测试。测试的目的是为了验证本转播系统能否实时无误地采集闭路电视信号,以及音/视频是否同步。
测试参数为两组不同分辨率和码率的组合参数,第一组:分辨率320x240,码率384kbps,第二组:分辨率640x480,码率512kbps。测试结果显示T-DMB节目能够实时正确播放,没有声音和视频帧的丢失,且音/视频能保持同步,表明本文的设计是满足系统要求的。图4为T-DMB播放器截图。
5.结论
本文基于对DirectShow和T-DMB标准的研究,设计并实现了闭路电视信号的采集和音/视频的同步,本文的设计可以用于构建T-DMB电视转播系统。同时该系统也存在一些有待继续扩展研究之处,比如采集模块所用的电视盒为模拟电视盒,随着数字电视的普及,今后可以利用数字电视盒采集数字电视节目并转换为T-DMB节目,这也是今后工作的一个方向。
参考文献
[1]李栋.数字声音广播[M].北京:北京广播学院出版社,2001:143-147.Li Dong.Digital Audio Broadcasting[M].Bei Jing:Communication University of China Press,2001:143-147.
[2]谢屈波,王六森等.基于DirectShow的图像采集的实现[J].软件导刊,2010.6,Vol.9 No.6.
[3]European Broadcasting Union.ETSI EN 300 401 v1.4.1 Radio Broadcasting Systems;Digital Audio Broadcasting(DAB)to mobile,portable and fixed receivers[S].France:Sophia Antipolis Cedex,2006.
[4]European Broadcasting Union.ETSI TS 102 428 v1.2.1 Digital Audio Broadcasting(DAB);DMB vedio service;User application specification[S].France:Sophia Antipolis Cedex,2009.
[5]金盛,张文军等.MPEG-2数字视频广播传输流中节目参考时钟的处理[J].红外与激光工程,2000,10,第29卷第5期.