汪 浩
(岳阳电视转播台,湖南 岳阳 414000)
根据国家广播电视总局下发的《关于按规划关停地面模拟电视有关工作安排的通知》,岳阳地区的地面模拟电视信号于2020年12月31日彻底关停。岳阳市广播电视全面进入数字时代。在地面无线电视数字化后,原来采用的基于模拟信号的监测方式已经不能满足安全播出要求,急需新的监测系统来保证整个播出系统的安全运行[1]。
在模拟电视时期,一个频道对应一套节目,需要监测的内容较少。县市级转播台通常将模拟节目的信号源通过视音频分配器接入视音频采集卡或者图像分割器,然后送入显示设备对播出的信号源进行监测。进入数字时代后,数字电视在同一个频道能传输多套节目,需要监测的内容增加了数倍,模拟监测设备无法继续使用。
以岳阳电视转播台金鹗山机房的信号源传输链路为例,如图1所示。前端机房将湖南省5套节目、中央12套节目、地方台1套节目经过编码和复用后,通过微波和光纤两条链路传输到岳阳金鹗山机房。微波和光纤两路信号传输内容相同,互为备份。金鹗山机房将接收到的节目流通过中央广播电视节目无线数字化覆盖工程的数码视讯EMR设备重新复用后,分为两个流,从EMR设备的ASI接口送入数字切换器,最后进入发射机。在此过程中,如果无法实时监测节目信号状况,信号源出现问题时就不能及时发现并处理,值班人员应急切换信号会导致安全播出事故。为了及时发现信号源的问题,需要对输出信号源进行监测[2]。
图1 微波、光纤信号源流程图
信号源监测系统是信号源安全传输的保障,必须符合国家广播电视总局62号令有关安全播出的要求,设计时首先要考虑安全问题,不能对正常的播出造成影响。其次要做到简单易用,不需要操作就能直观地看到信号源是否正常。
通过对金鹗山机房的信号源流程和实际工作需求进行分析,设计信号源监测系统主要包含信号源节目的获取和信号源节目的解码播放两部分。
信号源节目流可以从交换机、解码器及复用器等设备获取。设计时最终选择从复用器获取信号源节目,这样选择是因为复用器更靠近发射端,信源到发射机中间的节点最少,能更准确地反映进入发射机的信号的状况。数码视讯EMR设备(复用器)的ASI输出口和千兆网口都能获取信号源节目流。如果从ASI输出口获取节目,需要针对服务器额外购置ASI采集板卡,而通过千兆网口获取节目,只需要编写软件解码。考虑到成本和复杂程度,设计选择了从千兆网口获取信号源节目。
现有的数字电视的信号源,经过数码视讯EMR设备复用后分为主备信号,再通过ASI板卡输出,所以只需将相同的节目复用到EMR设备的千兆网口,操作如图2所示。获取到信号源节目后,将此复用信号送到服务器进行解码。
图2 信号源复用到千兆卡网口
解码播放部分是此系统的核心,需要实现的功能主要有两个。一是接收、解析信号源TS流。服务器接收到复用器传来的组播流后,先由demux解复用将TS流中的节目解出,再通过视频、音频解码器对每套节目进行解码。二是多画面输出,通过信号源监测系统的多画面输出,可以监测节目的画面质量,值班人员能及时发现信号源中出现的问题。这两个功能是通过VLC来实现的。VLC是一款开源、可扩展的多媒体播放器及框架,VLC播放器的核心引擎和多媒体框架接口libVLC,可以让开发人员快速实现多媒体应用程序[3]。监测系统通过调用第三方开源库Vlc.DotNet实现对VLC的操作。
软件开发的硬件环境为处理器Intel(R) Core(TM)i7-6600 CPU,主频为2.81 GHz,内存为8 GB。 开发软件环境如表1所示。
表1 开发软件环境
在IDE中建立好项目工程后,首先需要从NuGet包中安装Vlc.DotNet.Core.Interops、Vlc.DotNet.Core及Vlc.DotNet.Forms这3个 包。Vlc.DotNet对libVLC进行了封装。安装完成后,工具箱中出现Vlc.DotNet组件,如图3所示。安装Vlc.DotNet组件后,可以通过鼠标绘制界面和编写少量代码,就能调用VLC播放器,实现信号源节目的音视频监听监看。
图3 Vlc.DotNet工具
以单画面信号源监测为例,对主要代码进行介绍。对于多画面监测,只需在此基础上进行扩展 即可[4-6]。
(1)初始化组件方法部分代码如图4所示。初始化vlcControl组件时,必须将VLC的lib文件引入,这些文件是VLC的核心引擎和多媒体解码组件,没有引入将会报错。引入方法如下:在工程文件夹binRelease下新建vlclib文件夹(可自己命名),将VLC播放器目录下的libvlc.dll、libvlccore.dll等文件和plugins文件夹拷贝到vlclib文件夹中,然后在组件VlcLibDirectory属性中加入对vlclib文件夹的引用。初始化组件还需要注意的是VlcMediaplayerOptions属性,播放器很多功能都需要通过这个属性来设置。
图4 单画面初始化组件代码
(2)读取配置文件方法,如图5所示。读取配置文件Config.ini中的数据,配置文件主要包含UDP组播地址、端口号以及节目PID等信息。
(3)界面初始化方法部分代码如图5所示。界面构造时先将界面上的组件初始化,然后读取配置文件中的数据,最后调用vlcControl组件的Play方法,根据配置文件数据播放相应的节目。Play方法的options参数可以设置播放器选项,能覆盖之前通过VlcMediaplayerOptions属性添加的设置。这样就能够更方便地对播放器进行操作。
图5 界面初始化读取配置播放代码
信号源监测系统运行后,屏幕显示多画面效果如图6所示。界面上每个子画面显示的节目是通过配置文件Config.ini设置的。Config.ini文件将节目UDP地址、端口及PID等信息对应到每个子画面中。点击子画面标题栏,可以监听当前节目的音频。
图6 系统运行效果
信号源监测系统在运行过程中需要注意信号源的码率设置。
在实际测试中发现,码率过大时,硬件配置一般的服务器会出现卡顿和马赛克的情况。信号源组播码率不要超过20 Mb·s-1,如果节目过多导致码率过大,需要将信号源拆分成多个组播流。
设置信号源组播时,码率大小一定要与节目大小适配。码率设置不当,会导致监测系统解码出现马赛克或者中断现象。
信号源监测系统上线后已经稳定运行了一年多时间,多画面的展示让值班员能够实时对信号源进行监测,减少了因信号源引起的安全播出问题,对保障节目安全播出起到重要作用。系统基于VLC开发,具有很强的扩展性,还可以在此基础上继续开发,完善监测软件功能,帮助技术人员做好数字时代的广播电视安全播出工作,提升广播电视基本公共服务的质量和水平。