米 亮
(江蘇省廣播電視總臺(tái),江蘇 南京 210009)
江蘇省廣播電視總臺(tái)發(fā)射傳輸部負(fù)責(zé)運(yùn)維地面數(shù)字電視省前端信號(hào)系統(tǒng),為全省83個(gè)發(fā)射臺(tái)站提供中央臺(tái)和省臺(tái)信號(hào)源。該系統(tǒng)基于TS over IP 技術(shù)進(jìn)行信號(hào)傳輸。省前端節(jié)目數(shù)量多、節(jié)點(diǎn)多、節(jié)目碼率大。為提高前端信號(hào)系統(tǒng)的安全性,保障節(jié)目信號(hào)傳輸穩(wěn)定、不間斷,研發(fā)一種分布式碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng),為整個(gè)前端信號(hào)系統(tǒng)提供最快速、準(zhǔn)確的技術(shù)手段,實(shí)現(xiàn)衛(wèi)星接收、編碼、復(fù)用、單頻網(wǎng)適配、輸出、空收各環(huán)節(jié)信號(hào)碼流的實(shí)時(shí)監(jiān)控,同時(shí)實(shí)現(xiàn)碼流錄制功能[1]。
結(jié)合江蘇省地面數(shù)字電視省前端信號(hào)系統(tǒng)具體需求,系統(tǒng)除支持AVS+/DRA的節(jié)目解碼、實(shí)現(xiàn)多路碼流的集中監(jiān)控和異常報(bào)警外,還具有碼流自動(dòng)探測(cè)、單頻網(wǎng)包分析與調(diào)試功能。
在前期工程中,碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)集中監(jiān)控碼流,由于碼流多且節(jié)目碼率大,在使用中經(jīng)常出現(xiàn)超負(fù)荷不穩(wěn)定等情況。
(1)數(shù)據(jù)存儲(chǔ)。碼流數(shù)量多,比如主備衛(wèi)星碼流、主備編碼碼流、主備復(fù)用器碼流、主備播出碼流、省前端下傳碼流、地市回傳碼流以及空收碼流。這些碼流的匯集對(duì)服務(wù)器存儲(chǔ)容量要求較高,服務(wù)器經(jīng)常超負(fù)荷運(yùn)作,即使采用大容量存儲(chǔ)服務(wù)器,服務(wù)器的可靠性也難以滿足要求[2]。
(2)故障排除。集中化監(jiān)控方案不易排查故障,當(dāng)服務(wù)器死機(jī)或者故障,整個(gè)監(jiān)控系統(tǒng)無(wú)法正常運(yùn)行,維護(hù)人員不能直觀判斷故障原因。采用分布式監(jiān)控方案,一旦某臺(tái)設(shè)備故障,僅影響接入該服務(wù)器的碼流,其他服務(wù)器不受影響。維護(hù)人員可通過(guò)監(jiān)控終端的語(yǔ)音、聲、光等告警方式直觀判斷故障點(diǎn),快速完成故障發(fā)現(xiàn)和故障定位。
分布式監(jiān)控將碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)分布式部署,監(jiān)控地?cái)?shù)省前端衛(wèi)星接收、編碼、復(fù)用、單頻網(wǎng)適配、輸出、空收各環(huán)節(jié)信號(hào)碼流,將監(jiān)控信息匯聚到采集服務(wù)器,提供了對(duì)廣播電視節(jié)目的視音頻異態(tài)實(shí)時(shí)監(jiān)控和碼流錄制等功能。
采用分布式部署方案,對(duì)于動(dòng)態(tài)變化和擴(kuò)展要求適應(yīng)性強(qiáng)[3],節(jié)目錄制保存時(shí)間更長(zhǎng),正常信息可保存半年以上,異態(tài)信息能保存一年以上。
該監(jiān)控系統(tǒng)將各節(jié)點(diǎn)碼流的實(shí)時(shí)狀態(tài)推送到省前端監(jiān)控系統(tǒng),實(shí)現(xiàn)多路碼流的監(jiān)控和異常報(bào)警。如果信號(hào)出現(xiàn)故障,系統(tǒng)能及時(shí)鎖定及聲光報(bào)警,并能快速查找記錄的故障日志和畫面。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)
監(jiān)控軟件主要有TS碼流探測(cè)模塊、碼流分析模塊、單頻網(wǎng)SIP包分析模塊、碼流錄存及轉(zhuǎn)發(fā)模塊等功能模塊。
2.2.1 碼流探測(cè)模塊
碼流分析測(cè)試工具需要具備自動(dòng)探測(cè)功能,一是為了方便操作,不需要每個(gè)節(jié)目手動(dòng)掃描,二是實(shí)現(xiàn)查看某端口的所有節(jié)目,確保節(jié)目沒(méi)有變多或遺漏。但是常見(jiàn)的TS碼流分析軟件在獲取TS組播碼流時(shí),需要手動(dòng)輸入組播地址,并不能實(shí)現(xiàn)自動(dòng)探測(cè)的功能。本軟件根據(jù)使用需求支持自動(dòng)探測(cè)所有傳入組播流,同時(shí)也支持手動(dòng)輸入組播地址加入組播組。
(1)自動(dòng)探測(cè)功能。用戶選擇綁定本機(jī)某個(gè)網(wǎng)卡即可探測(cè)所有傳入的TS流,包括推送的組播流,也可通過(guò)自行添加組播地址加入組播組以獲得組播碼流。TS流是基于Packet的位流格式,每個(gè)包為188個(gè)字節(jié)(或204個(gè)字節(jié),在188個(gè)字節(jié)后加上了16個(gè)字節(jié)的CRC校驗(yàn)數(shù)據(jù),其他格式一樣)。
具體實(shí)現(xiàn)搜索TS流的方法為:建立.net中socket對(duì)象,綁定指定的本地地址,并探測(cè)傳入的所有數(shù)據(jù)。根據(jù)上述TS流特征過(guò)濾收到的數(shù)據(jù)包中的TS流,并將基本信息顯示在界面中。
(2)主動(dòng)加入組播組功能。與一般TS流分析軟件類似,可通過(guò)自行添加組播地址加入組播組以獲得組播碼流。
2.2.2 碼流分析模塊
選擇某個(gè)TS流并點(diǎn)擊開(kāi)始分析后,軟件將對(duì)該TS流進(jìn)行詳細(xì)分析、監(jiān)控。本程序設(shè)計(jì)一個(gè)TS_Deal類來(lái)完成所有TS碼流信息的監(jiān)測(cè)、分析功能。該類的實(shí)例綁定一個(gè)TS流后,便會(huì)持續(xù)收取碼流,在TS_Deal實(shí)例中每隔一定時(shí)間對(duì)已獲取的所有數(shù)據(jù)包進(jìn)行分析,主要包括以下內(nèi)容。
(1)分析TS包頭。根據(jù)TS_header的結(jié)構(gòu),解析每個(gè)TS包的包頭,解析后即得到該TS包對(duì)應(yīng)的PID、同步字節(jié)、包遞增計(jì)數(shù)器以及加密標(biāo)志等 信息。
(2)計(jì)算總碼率。在一定時(shí)間后計(jì)算緩存中的TS包個(gè)數(shù),計(jì)算得到總碼率。
(3)統(tǒng)計(jì)PID信息。每個(gè)PID碼率與計(jì)算總碼率類似,每隔一定時(shí)間計(jì)算每個(gè)PID包的個(gè)數(shù),從而得到每個(gè)PID碼率。
(4)節(jié)目信息分析。解析SDT、PAT、CAT、PMT表并分析錯(cuò)誤信息,通過(guò)PID判斷表類型,根據(jù)每個(gè)表結(jié)構(gòu)進(jìn)行解析。首先解析PAT表,獲取碼流中所有節(jié)目列表。程序在解析到N環(huán)部分的時(shí)候,會(huì)讀取并保存節(jié)目列表及其PID。PAT表列出了TS流中所有的節(jié)目列表,以及節(jié)目對(duì)應(yīng)的PID值,這個(gè)PID值表征的是該節(jié)目對(duì)應(yīng)的PMT表的 PID值。
PMT提供一路節(jié)目包含的所有原始碼流的PID映射表。程序在讀取N環(huán)的時(shí)候會(huì)讀取該節(jié)目所有的碼流列表及其PID,解析的時(shí)候可以根據(jù)PID來(lái)分離。節(jié)目時(shí)鐘參考PCR的PID和視頻的PID是相等的。由PAT得出所有的節(jié)目列表,根據(jù)一個(gè)節(jié)目篩選出等于該節(jié)目PID的TS包,就可以得到該節(jié)目的所有碼流的PID映射表。最后,通過(guò)SDT表的解析獲得所有節(jié)目的節(jié)目名稱、服務(wù)名稱等信息。最后,將PAT、PMT、SDT表解析后,將節(jié)目信息整理并通過(guò)界面右側(cè)treeview顯示出來(lái)。
(5)錯(cuò)誤分析。錯(cuò)誤變量使用TR101_Status結(jié)構(gòu)體定義,記錄錯(cuò)誤狀態(tài)及錯(cuò)誤發(fā)生的次數(shù)。根據(jù)TR101-290,在上文搜索SDT、PAT、PMT等表時(shí)分析碼流中的錯(cuò)誤信息,錯(cuò)誤解析后將錯(cuò)誤內(nèi)容和錯(cuò)誤個(gè)數(shù)展示在界面下方,當(dāng)發(fā)生錯(cuò)誤時(shí)對(duì)應(yīng)項(xiàng)目顯示為紅色以及錯(cuò)誤個(gè)數(shù)。軟件提供了6個(gè)一級(jí)錯(cuò)誤及傳輸錯(cuò)誤、CAT錯(cuò)誤、2個(gè)二級(jí)錯(cuò)誤的檢測(cè)。在IP傳輸層面,按照IP包的時(shí)間間隔計(jì)數(shù)并做統(tǒng)計(jì)報(bào)警。
2.2.3 單頻網(wǎng)SIP包分析模塊
為了地面數(shù)字電視單頻網(wǎng)測(cè)試需要,系統(tǒng)加入了單頻網(wǎng)SIP包分析模塊。在地面數(shù)字電視單頻網(wǎng)中,適配器每1 s向輸入的TS碼流中插入1個(gè)SIP,插入時(shí)刻與GPS的1 pps對(duì)齊,SIP包的格式與MPEG2-TS包格式相同,由4 Byte的包頭和 184 Byte的數(shù)據(jù)字段組成。
程序?qū)ζ渲蠸I_SIP包含的信息進(jìn)行解析,實(shí)時(shí)統(tǒng)計(jì)SIP包間隔并計(jì)算SIP抖動(dòng)。由于網(wǎng)絡(luò)傳輸可能有誤差,程序提供SIP累計(jì)抖動(dòng)調(diào)整統(tǒng)計(jì) 精度。
2.2.4 碼流錄存及轉(zhuǎn)發(fā)模塊
碼流錄存及轉(zhuǎn)發(fā)模塊支持原始碼流錄制和觸發(fā)碼流錄制。原始碼流錄制是對(duì)所有節(jié)目的原始碼流進(jìn)行錄制。觸發(fā)碼流錄制是在報(bào)警發(fā)生時(shí),對(duì)發(fā)生報(bào)警節(jié)目所在的碼流進(jìn)行原始碼流錄制。同時(shí),系統(tǒng)采用了磁盤預(yù)分配、延時(shí)寫入等實(shí)用技術(shù),提高了存儲(chǔ)的穩(wěn)定性,延長(zhǎng)硬盤壽命。
軟件自動(dòng)根據(jù)時(shí)間間隔建立文件夾,將實(shí)時(shí)將收到的TS流保存至本地文件夾。在硬盤占用空間達(dá)到設(shè)定的最大值后循環(huán)刪除最早的記錄。保存間隔時(shí)間可自定義。
該模塊將系統(tǒng)錄像以UDP組播方式推送至指定組播地址。轉(zhuǎn)發(fā)模塊提供轉(zhuǎn)發(fā)地址/端口號(hào)、錄像地址/端口號(hào)、錄像路徑等參數(shù)配置。此功能實(shí)現(xiàn)流程為:客戶端發(fā)送預(yù)覽請(qǐng)求,服務(wù)端接收請(qǐng)求后發(fā)送推送申請(qǐng)至對(duì)應(yīng)錄存軟件,錄存軟件推送對(duì)應(yīng)節(jié)目至指定地址,客戶端接收節(jié)目并解碼 至界面。
結(jié)合江蘇省廣播電視總臺(tái)地面數(shù)字電視省前端信號(hào)的需求,研發(fā)了一種分布式碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)。在實(shí)現(xiàn)碼流實(shí)時(shí)監(jiān)控與錄制的基礎(chǔ)上,開(kāi)發(fā)了碼流自動(dòng)探測(cè)、單頻網(wǎng)包分析、AVS+解碼、監(jiān)控模板預(yù)設(shè)等功能模塊。系統(tǒng)可靠性高、實(shí)時(shí)性強(qiáng),確保了江蘇省地面數(shù)字電視省前端安全播出。