汪 浩
(岳陽(yáng)電視轉(zhuǎn)播臺(tái),湖南 岳陽(yáng) 414000)
根據(jù)國(guó)家廣播電視總局下發(fā)的《關(guān)于按規(guī)劃關(guān)停地面模擬電視有關(guān)工作安排的通知》,岳陽(yáng)地區(qū)的地面模擬電視信號(hào)于2020年12月31日徹底關(guān)停。岳陽(yáng)市廣播電視全面進(jìn)入數(shù)字時(shí)代。在地面無(wú)線電視數(shù)字化后,原來(lái)采用的基于模擬信號(hào)的監(jiān)測(cè)方式已經(jīng)不能滿(mǎn)足安全播出要求,急需新的監(jiān)測(cè)系統(tǒng)來(lái)保證整個(gè)播出系統(tǒng)的安全運(yùn)行[1]。
在模擬電視時(shí)期,一個(gè)頻道對(duì)應(yīng)一套節(jié)目,需要監(jiān)測(cè)的內(nèi)容較少??h市級(jí)轉(zhuǎn)播臺(tái)通常將模擬節(jié)目的信號(hào)源通過(guò)視音頻分配器接入視音頻采集卡或者圖像分割器,然后送入顯示設(shè)備對(duì)播出的信號(hào)源進(jìn)行監(jiān)測(cè)。進(jìn)入數(shù)字時(shí)代后,數(shù)字電視在同一個(gè)頻道能傳輸多套節(jié)目,需要監(jiān)測(cè)的內(nèi)容增加了數(shù)倍,模擬監(jiān)測(cè)設(shè)備無(wú)法繼續(xù)使用。
以岳陽(yáng)電視轉(zhuǎn)播臺(tái)金鶚山機(jī)房的信號(hào)源傳輸鏈路為例,如圖1所示。前端機(jī)房將湖南省5套節(jié)目、中央12套節(jié)目、地方臺(tái)1套節(jié)目經(jīng)過(guò)編碼和復(fù)用后,通過(guò)微波和光纖兩條鏈路傳輸?shù)皆狸?yáng)金鶚山機(jī)房。微波和光纖兩路信號(hào)傳輸內(nèi)容相同,互為備份。金鶚山機(jī)房將接收到的節(jié)目流通過(guò)中央廣播電視節(jié)目無(wú)線數(shù)字化覆蓋工程的數(shù)碼視訊EMR設(shè)備重新復(fù)用后,分為兩個(gè)流,從EMR設(shè)備的ASI接口送入數(shù)字切換器,最后進(jìn)入發(fā)射機(jī)。在此過(guò)程中,如果無(wú)法實(shí)時(shí)監(jiān)測(cè)節(jié)目信號(hào)狀況,信號(hào)源出現(xiàn)問(wèn)題時(shí)就不能及時(shí)發(fā)現(xiàn)并處理,值班人員應(yīng)急切換信號(hào)會(huì)導(dǎo)致安全播出事故。為了及時(shí)發(fā)現(xiàn)信號(hào)源的問(wèn)題,需要對(duì)輸出信號(hào)源進(jìn)行監(jiān)測(cè)[2]。
圖1 微波、光纖信號(hào)源流程圖
信號(hào)源監(jiān)測(cè)系統(tǒng)是信號(hào)源安全傳輸?shù)谋U?,必須符合?guó)家廣播電視總局62號(hào)令有關(guān)安全播出的要求,設(shè)計(jì)時(shí)首先要考慮安全問(wèn)題,不能對(duì)正常的播出造成影響。其次要做到簡(jiǎn)單易用,不需要操作就能直觀地看到信號(hào)源是否正常。
通過(guò)對(duì)金鶚山機(jī)房的信號(hào)源流程和實(shí)際工作需求進(jìn)行分析,設(shè)計(jì)信號(hào)源監(jiān)測(cè)系統(tǒng)主要包含信號(hào)源節(jié)目的獲取和信號(hào)源節(jié)目的解碼播放兩部分。
信號(hào)源節(jié)目流可以從交換機(jī)、解碼器及復(fù)用器等設(shè)備獲取。設(shè)計(jì)時(shí)最終選擇從復(fù)用器獲取信號(hào)源節(jié)目,這樣選擇是因?yàn)閺?fù)用器更靠近發(fā)射端,信源到發(fā)射機(jī)中間的節(jié)點(diǎn)最少,能更準(zhǔn)確地反映進(jìn)入發(fā)射機(jī)的信號(hào)的狀況。數(shù)碼視訊EMR設(shè)備(復(fù)用器)的ASI輸出口和千兆網(wǎng)口都能獲取信號(hào)源節(jié)目流。如果從ASI輸出口獲取節(jié)目,需要針對(duì)服務(wù)器額外購(gòu)置ASI采集板卡,而通過(guò)千兆網(wǎng)口獲取節(jié)目,只需要編寫(xiě)軟件解碼。考慮到成本和復(fù)雜程度,設(shè)計(jì)選擇了從千兆網(wǎng)口獲取信號(hào)源節(jié)目。
現(xiàn)有的數(shù)字電視的信號(hào)源,經(jīng)過(guò)數(shù)碼視訊EMR設(shè)備復(fù)用后分為主備信號(hào),再通過(guò)ASI板卡輸出,所以只需將相同的節(jié)目復(fù)用到EMR設(shè)備的千兆網(wǎng)口,操作如圖2所示。獲取到信號(hào)源節(jié)目后,將此復(fù)用信號(hào)送到服務(wù)器進(jìn)行解碼。
圖2 信號(hào)源復(fù)用到千兆卡網(wǎng)口
解碼播放部分是此系統(tǒng)的核心,需要實(shí)現(xiàn)的功能主要有兩個(gè)。一是接收、解析信號(hào)源TS流。服務(wù)器接收到復(fù)用器傳來(lái)的組播流后,先由demux解復(fù)用將TS流中的節(jié)目解出,再通過(guò)視頻、音頻解碼器對(duì)每套節(jié)目進(jìn)行解碼。二是多畫(huà)面輸出,通過(guò)信號(hào)源監(jiān)測(cè)系統(tǒng)的多畫(huà)面輸出,可以監(jiān)測(cè)節(jié)目的畫(huà)面質(zhì)量,值班人員能及時(shí)發(fā)現(xiàn)信號(hào)源中出現(xiàn)的問(wèn)題。這兩個(gè)功能是通過(guò)VLC來(lái)實(shí)現(xiàn)的。VLC是一款開(kāi)源、可擴(kuò)展的多媒體播放器及框架,VLC播放器的核心引擎和多媒體框架接口libVLC,可以讓開(kāi)發(fā)人員快速實(shí)現(xiàn)多媒體應(yīng)用程序[3]。監(jiān)測(cè)系統(tǒng)通過(guò)調(diào)用第三方開(kāi)源庫(kù)Vlc.DotNet實(shí)現(xiàn)對(duì)VLC的操作。
軟件開(kāi)發(fā)的硬件環(huán)境為處理器Intel(R) Core(TM)i7-6600 CPU,主頻為2.81 GHz,內(nèi)存為8 GB。 開(kāi)發(fā)軟件環(huán)境如表1所示。
表1 開(kāi)發(fā)軟件環(huán)境
在IDE中建立好項(xiàng)目工程后,首先需要從NuGet包中安裝Vlc.DotNet.Core.Interops、Vlc.DotNet.Core及Vlc.DotNet.Forms這3個(gè) 包。Vlc.DotNet對(duì)libVLC進(jìn)行了封裝。安裝完成后,工具箱中出現(xiàn)Vlc.DotNet組件,如圖3所示。安裝Vlc.DotNet組件后,可以通過(guò)鼠標(biāo)繪制界面和編寫(xiě)少量代碼,就能調(diào)用VLC播放器,實(shí)現(xiàn)信號(hào)源節(jié)目的音視頻監(jiān)聽(tīng)監(jiān)看。
圖3 Vlc.DotNet工具
以單畫(huà)面信號(hào)源監(jiān)測(cè)為例,對(duì)主要代碼進(jìn)行介紹。對(duì)于多畫(huà)面監(jiān)測(cè),只需在此基礎(chǔ)上進(jìn)行擴(kuò)展 即可[4-6]。
(1)初始化組件方法部分代碼如圖4所示。初始化vlcControl組件時(shí),必須將VLC的lib文件引入,這些文件是VLC的核心引擎和多媒體解碼組件,沒(méi)有引入將會(huì)報(bào)錯(cuò)。引入方法如下:在工程文件夾binRelease下新建vlclib文件夾(可自己命名),將VLC播放器目錄下的libvlc.dll、libvlccore.dll等文件和plugins文件夾拷貝到vlclib文件夾中,然后在組件VlcLibDirectory屬性中加入對(duì)vlclib文件夾的引用。初始化組件還需要注意的是VlcMediaplayerOptions屬性,播放器很多功能都需要通過(guò)這個(gè)屬性來(lái)設(shè)置。
圖4 單畫(huà)面初始化組件代碼
(2)讀取配置文件方法,如圖5所示。讀取配置文件Config.ini中的數(shù)據(jù),配置文件主要包含UDP組播地址、端口號(hào)以及節(jié)目PID等信息。
(3)界面初始化方法部分代碼如圖5所示。界面構(gòu)造時(shí)先將界面上的組件初始化,然后讀取配置文件中的數(shù)據(jù),最后調(diào)用vlcControl組件的Play方法,根據(jù)配置文件數(shù)據(jù)播放相應(yīng)的節(jié)目。Play方法的options參數(shù)可以設(shè)置播放器選項(xiàng),能覆蓋之前通過(guò)VlcMediaplayerOptions屬性添加的設(shè)置。這樣就能夠更方便地對(duì)播放器進(jìn)行操作。
圖5 界面初始化讀取配置播放代碼
信號(hào)源監(jiān)測(cè)系統(tǒng)運(yùn)行后,屏幕顯示多畫(huà)面效果如圖6所示。界面上每個(gè)子畫(huà)面顯示的節(jié)目是通過(guò)配置文件Config.ini設(shè)置的。Config.ini文件將節(jié)目UDP地址、端口及PID等信息對(duì)應(yīng)到每個(gè)子畫(huà)面中。點(diǎn)擊子畫(huà)面標(biāo)題欄,可以監(jiān)聽(tīng)當(dāng)前節(jié)目的音頻。
圖6 系統(tǒng)運(yùn)行效果
信號(hào)源監(jiān)測(cè)系統(tǒng)在運(yùn)行過(guò)程中需要注意信號(hào)源的碼率設(shè)置。
在實(shí)際測(cè)試中發(fā)現(xiàn),碼率過(guò)大時(shí),硬件配置一般的服務(wù)器會(huì)出現(xiàn)卡頓和馬賽克的情況。信號(hào)源組播碼率不要超過(guò)20 Mb·s-1,如果節(jié)目過(guò)多導(dǎo)致碼率過(guò)大,需要將信號(hào)源拆分成多個(gè)組播流。
設(shè)置信號(hào)源組播時(shí),碼率大小一定要與節(jié)目大小適配。碼率設(shè)置不當(dāng),會(huì)導(dǎo)致監(jiān)測(cè)系統(tǒng)解碼出現(xiàn)馬賽克或者中斷現(xiàn)象。
信號(hào)源監(jiān)測(cè)系統(tǒng)上線后已經(jīng)穩(wěn)定運(yùn)行了一年多時(shí)間,多畫(huà)面的展示讓值班員能夠?qū)崟r(shí)對(duì)信號(hào)源進(jìn)行監(jiān)測(cè),減少了因信號(hào)源引起的安全播出問(wèn)題,對(duì)保障節(jié)目安全播出起到重要作用。系統(tǒng)基于VLC開(kāi)發(fā),具有很強(qiáng)的擴(kuò)展性,還可以在此基礎(chǔ)上繼續(xù)開(kāi)發(fā),完善監(jiān)測(cè)軟件功能,幫助技術(shù)人員做好數(shù)字時(shí)代的廣播電視安全播出工作,提升廣播電視基本公共服務(wù)的質(zhì)量和水平。