分布式码流实时监控与录制系统的设计与实现
2021-10-21米亮
米 亮
(江苏省广播电视总台,江苏 南京 210009)
0 引 言
江苏省广播电视总台发射传输部负责运维地面数字电视省前端信号系统,为全省83个发射台站提供中央台和省台信号源。该系统基于TS over IP 技术进行信号传输。省前端节目数量多、节点多、节目码率大。为提高前端信号系统的安全性,保障节目信号传输稳定、不间断,研发一种分布式码流实时监控与录制系统,为整个前端信号系统提供最快速、准确的技术手段,实现卫星接收、编码、复用、单频网适配、输出、空收各环节信号码流的实时监控,同时实现码流录制功能[1]。
结合江苏省地面数字电视省前端信号系统具体需求,系统除支持AVS+/DRA的节目解码、实现多路码流的集中监控和异常报警外,还具有码流自动探测、单频网包分析与调试功能。
1 集中化监控
在前期工程中,码流实时监控与录制系统集中监控码流,由于码流多且节目码率大,在使用中经常出现超负荷不稳定等情况。
(1)数据存储。码流数量多,比如主备卫星码流、主备编码码流、主备复用器码流、主备播出码流、省前端下传码流、地市回传码流以及空收码流。这些码流的汇集对服务器存储容量要求较高,服务器经常超负荷运作,即使采用大容量存储服务器,服务器的可靠性也难以满足要求[2]。
(2)故障排除。集中化监控方案不易排查故障,当服务器死机或者故障,整个监控系统无法正常运行,维护人员不能直观判断故障原因。采用分布式监控方案,一旦某台设备故障,仅影响接入该服务器的码流,其他服务器不受影响。维护人员可通过监控终端的语音、声、光等告警方式直观判断故障点,快速完成故障发现和故障定位。
2 分布式监控设计方案
分布式监控将码流实时监控与录制系统分布式部署,监控地数省前端卫星接收、编码、复用、单频网适配、输出、空收各环节信号码流,将监控信息汇聚到采集服务器,提供了对广播电视节目的视音频异态实时监控和码流录制等功能。
采用分布式部署方案,对于动态变化和扩展要求适应性强[3],节目录制保存时间更长,正常信息可保存半年以上,异态信息能保存一年以上。
2.1 硬件系统架构
该监控系统将各节点码流的实时状态推送到省前端监控系统,实现多路码流的监控和异常报警。如果信号出现故障,系统能及时锁定及声光报警,并能快速查找记录的故障日志和画面。系统结构如图1所示。
图1 系统结构
2.2 分布式监控软件
监控软件主要有TS码流探测模块、码流分析模块、单频网SIP包分析模块、码流录存及转发模块等功能模块。
2.2.1 码流探测模块
码流分析测试工具需要具备自动探测功能,一是为了方便操作,不需要每个节目手动扫描,二是实现查看某端口的所有节目,确保节目没有变多或遗漏。但是常见的TS码流分析软件在获取TS组播码流时,需要手动输入组播地址,并不能实现自动探测的功能。本软件根据使用需求支持自动探测所有传入组播流,同时也支持手动输入组播地址加入组播组。
(1)自动探测功能。用户选择绑定本机某个网卡即可探测所有传入的TS流,包括推送的组播流,也可通过自行添加组播地址加入组播组以获得组播码流。TS流是基于Packet的位流格式,每个包为188个字节(或204个字节,在188个字节后加上了16个字节的CRC校验数据,其他格式一样)。
具体实现搜索TS流的方法为:建立.net中socket对象,绑定指定的本地地址,并探测传入的所有数据。根据上述TS流特征过滤收到的数据包中的TS流,并将基本信息显示在界面中。
(2)主动加入组播组功能。与一般TS流分析软件类似,可通过自行添加组播地址加入组播组以获得组播码流。
2.2.2 码流分析模块
选择某个TS流并点击开始分析后,软件将对该TS流进行详细分析、监控。本程序设计一个TS_Deal类来完成所有TS码流信息的监测、分析功能。该类的实例绑定一个TS流后,便会持续收取码流,在TS_Deal实例中每隔一定时间对已获取的所有数据包进行分析,主要包括以下内容。
(1)分析TS包头。根据TS_header的结构,解析每个TS包的包头,解析后即得到该TS包对应的PID、同步字节、包递增计数器以及加密标志等 信息。
(2)计算总码率。在一定时间后计算缓存中的TS包个数,计算得到总码率。
(3)统计PID信息。每个PID码率与计算总码率类似,每隔一定时间计算每个PID包的个数,从而得到每个PID码率。
(4)节目信息分析。解析SDT、PAT、CAT、PMT表并分析错误信息,通过PID判断表类型,根据每个表结构进行解析。首先解析PAT表,获取码流中所有节目列表。程序在解析到N环部分的时候,会读取并保存节目列表及其PID。PAT表列出了TS流中所有的节目列表,以及节目对应的PID值,这个PID值表征的是该节目对应的PMT表的 PID值。
PMT提供一路节目包含的所有原始码流的PID映射表。程序在读取N环的时候会读取该节目所有的码流列表及其PID,解析的时候可以根据PID来分离。节目时钟参考PCR的PID和视频的PID是相等的。由PAT得出所有的节目列表,根据一个节目筛选出等于该节目PID的TS包,就可以得到该节目的所有码流的PID映射表。最后,通过SDT表的解析获得所有节目的节目名称、服务名称等信息。最后,将PAT、PMT、SDT表解析后,将节目信息整理并通过界面右侧treeview显示出来。
(5)错误分析。错误变量使用TR101_Status结构体定义,记录错误状态及错误发生的次数。根据TR101-290,在上文搜索SDT、PAT、PMT等表时分析码流中的错误信息,错误解析后将错误内容和错误个数展示在界面下方,当发生错误时对应项目显示为红色以及错误个数。软件提供了6个一级错误及传输错误、CAT错误、2个二级错误的检测。在IP传输层面,按照IP包的时间间隔计数并做统计报警。
2.2.3 单频网SIP包分析模块
为了地面数字电视单频网测试需要,系统加入了单频网SIP包分析模块。在地面数字电视单频网中,适配器每1 s向输入的TS码流中插入1个SIP,插入时刻与GPS的1 pps对齐,SIP包的格式与MPEG2-TS包格式相同,由4 Byte的包头和 184 Byte的数据字段组成。
程序对其中SI_SIP包含的信息进行解析,实时统计SIP包间隔并计算SIP抖动。由于网络传输可能有误差,程序提供SIP累计抖动调整统计 精度。
2.2.4 码流录存及转发模块
码流录存及转发模块支持原始码流录制和触发码流录制。原始码流录制是对所有节目的原始码流进行录制。触发码流录制是在报警发生时,对发生报警节目所在的码流进行原始码流录制。同时,系统采用了磁盘预分配、延时写入等实用技术,提高了存储的稳定性,延长硬盘寿命。
软件自动根据时间间隔建立文件夹,将实时将收到的TS流保存至本地文件夹。在硬盘占用空间达到设定的最大值后循环删除最早的记录。保存间隔时间可自定义。
该模块将系统录像以UDP组播方式推送至指定组播地址。转发模块提供转发地址/端口号、录像地址/端口号、录像路径等参数配置。此功能实现流程为:客户端发送预览请求,服务端接收请求后发送推送申请至对应录存软件,录存软件推送对应节目至指定地址,客户端接收节目并解码 至界面。
3 结 语
结合江苏省广播电视总台地面数字电视省前端信号的需求,研发了一种分布式码流实时监控与录制系统。在实现码流实时监控与录制的基础上,开发了码流自动探测、单频网包分析、AVS+解码、监控模板预设等功能模块。系统可靠性高、实时性强,确保了江苏省地面数字电视省前端安全播出。