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