蘭 珺
IPTV(互聯(lián)網(wǎng)交互電視)是基于寬帶業(yè)務(wù)平臺(tái),以機(jī)頂盒或其他具有音視頻編解碼能力的數(shù)字化設(shè)備為終端,通過聚合服務(wù)商的各種流媒體服務(wù)內(nèi)容和增值應(yīng)用,為用戶提供多種互動(dòng)多媒體服務(wù)的一項(xiàng)業(yè)務(wù)。
隨著業(yè)務(wù)的不斷完善,用戶大量增加,IPTV已成為黨和政府的重要宣傳渠道。根據(jù)工信部相關(guān)數(shù)據(jù),截止到2020年底,中國電信、中國移動(dòng)、中國聯(lián)通三家企業(yè)在全國范圍內(nèi)共發(fā)展IPTV用戶3.15億戶,全年凈增2120萬戶。廣西現(xiàn)有IPTV用戶近600萬,覆蓋人群超過2000萬。
雖然從數(shù)據(jù)上看,IPTV的發(fā)展欣欣向榮,用戶量仍在增加,但增速已明顯放緩,已經(jīng)基本觸及用戶紅利的天花板。調(diào)整IPTV運(yùn)營思路,深挖現(xiàn)有存量用戶價(jià)值,成為IPTV發(fā)展轉(zhuǎn)型的重要方向,而EPG頁面開發(fā)因此成為重要的運(yùn)營環(huán)節(jié)。
EPG是英文Electronic Program Guide的縮寫,意思是電子節(jié)目菜單。EPG是數(shù)字電視的重要標(biāo)志,是觀眾進(jìn)入IPTV的門戶。EPG界面上一般都提供有各類菜單、按鈕、鏈接等可供用戶選擇節(jié)目時(shí)直接點(diǎn)擊的組件,因此,IPTV所提供的各種業(yè)務(wù)都是通過EPG系統(tǒng)索引及導(dǎo)航來完成的。
可以說,EPG系統(tǒng)在IPTV發(fā)展過程中的地位十分重要,它是IPTV業(yè)務(wù)面向用戶最重要的界面,IPTV的運(yùn)營思路、運(yùn)營手段和實(shí)現(xiàn)方式等均需EPG系統(tǒng)的密切配合。在IPTV人口紅利期已過,更講求精細(xì)化運(yùn)營的大環(huán)境下,IPTV業(yè)務(wù)對EPG的頁面開發(fā)提出了更高的要求。
在IPTV EPG頁面的開發(fā)過程中,經(jīng)常需要使用機(jī)頂盒進(jìn)行調(diào)試。由于IPTV機(jī)頂盒的型號(hào)種類過多,且測試用機(jī)頂盒數(shù)量有限,常常出現(xiàn)多個(gè)開發(fā)人員需要共享機(jī)頂盒進(jìn)行調(diào)試的情況,影響了開發(fā)的效率。另外,如需在機(jī)頂盒中進(jìn)行調(diào)試,必須在開發(fā)代碼中添加大量的調(diào)試代碼,而這些代碼在上線前必須全部刪除,稍有不慎就會(huì)影響EPG頁面的上線質(zhì)量,造成功能缺失、頁面BUG或用戶投訴等情況。因此,在機(jī)頂盒中調(diào)試EPG頁面代碼一直是開發(fā)人員在工作中遇到的難題。
通過編寫一個(gè)IPTV通用機(jī)頂盒開發(fā)模擬器,可以讓開發(fā)人員在EPG開發(fā)過程中只要使用電腦就可以模擬機(jī)頂盒的操作,簡化EPG調(diào)試流程,不需要在EPG代碼中添加其他過多的調(diào)試信息,提升開發(fā)的質(zhì)量。本文將詳細(xì)說明如何通過Chrome瀏覽器的擴(kuò)展(Extension)機(jī)制來實(shí)現(xiàn)IPTV機(jī)頂盒的模擬。
通過閱讀IPTV機(jī)頂盒規(guī)范可以看出,IPTV機(jī)頂盒的核心實(shí)質(zhì)上是一個(gè)網(wǎng)頁瀏覽器。主流的瀏覽器對頁面的解析功已經(jīng)很完整了,技術(shù)人員在開發(fā)IPTV機(jī)頂盒模擬器的時(shí)候不需要從零開始,可以直接使用現(xiàn)有瀏覽器,并根據(jù)IPTV機(jī)頂盒模擬器的特殊需求進(jìn)行二次開發(fā)。另外,Chrome瀏覽器對于二次開發(fā)是友好的,開發(fā)人員可以很方便地進(jìn)行代碼的調(diào)試,只需要在網(wǎng)頁瀏覽器的基礎(chǔ)上添加三個(gè)IPTV機(jī)頂盒內(nèi)置的JavaScript對象,就可以在Chrome瀏覽器中基本實(shí)現(xiàn)模擬IPTV機(jī)頂盒的工作。三個(gè)IPTV機(jī)頂盒內(nèi)置的JavaScript對象分別為:
(一)MediaPlayer:直播、點(diǎn)播的視頻播放器對象;
(二)Utitliy:播放器狀態(tài)變化事件處理的對象;
(三)Authentication:IPTV用戶認(rèn)證,保存盒子信息和直播頻道列表。
另外,還需要實(shí)現(xiàn)模擬遙控器,來負(fù)責(zé)向機(jī)頂盒模擬器頁面發(fā)送消息,這就需要開發(fā)一個(gè)遙控器頁面,讓開發(fā)人員可以通過這個(gè)虛擬的遙控器發(fā)送按鍵消息給機(jī)頂盒模擬器頁面。
根據(jù)以上思路可以明確,若要實(shí)現(xiàn)IPTV機(jī)頂盒的模擬器及相關(guān)功能,就需要Chrome Extension完成兩個(gè)模塊的開發(fā),一個(gè)模塊實(shí)現(xiàn)IPTV內(nèi)嵌的javascript對象,另一個(gè)模塊是遙控器模擬頁面。Chrome Extension的工作機(jī)制如下。
Chrome Extension主要由4個(gè)核心的組件來完成工作:
(一)Background scripts:服務(wù)腳本和Chrome同一個(gè)生命周期,在Chrome打開時(shí)創(chuàng)建,在Chrome關(guān)閉時(shí)銷毀,同時(shí)負(fù)責(zé)監(jiān)聽Chrome的事件進(jìn)行相應(yīng)的處理;
(二)Content scripts:和每個(gè)頁面是同一個(gè)生命周期,根據(jù)Chrome的安全沙盒的機(jī)制可以訪問頁面上的DOM,但是不能訪問頁面上的JavaScript腳本;
(三)Options page:通過這個(gè)頁面可對Extension進(jìn)行配置;
(四)UI Elements:點(diǎn)擊插件圖標(biāo)的時(shí)候響應(yīng)UI的頁面。
了解Chrome的Extension機(jī)制之后,就可以著手進(jìn)行IPTV機(jī)頂盒模擬器具體頁面的開發(fā)工作了。IPTV機(jī)頂盒的模擬器整體流程如下圖:
流程說明如下。
1.開發(fā)人員打開Chrome瀏覽器時(shí),瀏覽器會(huì)自動(dòng)加載IPTV模擬器插件,先調(diào)用background.js,完成缺省配置的配置工作。
2.開發(fā)人員訪問一個(gè)頁面,Chrome瀏覽器加載Content Script的腳本。
3.Content Script中的腳本,通過檢測加載HTML中的Meta節(jié)點(diǎn)來判斷是不是一個(gè)合法標(biāo)準(zhǔn)的IPTV頁面,如果是IPTV頁面則注入MediaPlayer、Authentication、Utitliy三個(gè)對象。
4.在頁面加載成功后,Content Script自動(dòng)生成遙控器的界面。
5.將遙控器的界面注入。
這樣,一個(gè)IPTV機(jī)頂盒的模擬器就完成了整體的流程,IPTV頁面即可正常顯示和訪問。
需要解決的第二個(gè)問題是如何模擬遙控器中的按鍵信息。在以往IPTV的EPG頁面開發(fā)中,處理遙控按鍵的代碼都采用onkeypress來實(shí)現(xiàn),即用戶按下或按住一個(gè)遙控器按鍵時(shí)會(huì)觸發(fā)onkeypress事件。因此,可以通過構(gòu)建一個(gè)事件直接調(diào)用document.onkeypress的方法來模擬調(diào)用遙控器情景。
實(shí)現(xiàn)IPTV機(jī)頂盒的模擬器功能,最重要的就是模擬機(jī)頂盒的視頻播放功能。采用配置需要模擬播放的視頻URL地址,使用H5的Video標(biāo)簽,EPG頁面通過調(diào)用MediaPlayer來實(shí)現(xiàn)視頻播放。同時(shí),將Video的播放事件轉(zhuǎn)換為IPTV對應(yīng)的播放事件,發(fā)送給相關(guān)頁面。
此外,還可以通過MediaPlayer的joinChannel方法來模擬IPTV直播頻道視頻流的播放,本文不再贅述。
通過IPTV通用機(jī)頂盒模擬器的開發(fā),可極大減輕開發(fā)人員在IPTV EPG頁面開發(fā)過程中對機(jī)頂盒的依賴。同時(shí),由于開發(fā)環(huán)境和生產(chǎn)環(huán)境的EPG代碼基本匹配,不再需要區(qū)分開發(fā)環(huán)境和測試環(huán)境,整體提升了EPG的整體開發(fā)效率。
后續(xù),模擬器工具可進(jìn)行相應(yīng)開發(fā),對接應(yīng)用到真實(shí)的IPTV環(huán)境中,用于EPG實(shí)時(shí)頁面監(jiān)控、IPTV視頻播放質(zhì)量監(jiān)控、IPTV內(nèi)容編排管理等工作,進(jìn)一步為IPTV的運(yùn)營提供支撐能力。