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