陳文琴,黃 珣
(國家氣象信息中心,北京100081)
責任編輯:任健男
天氣預報電視會商系統是中國氣象局重要的實時業務平臺,該系統承載著全國氣象部門遠程天氣會商、會議等任務[1]。天氣預報電視會商錄播系統(以下簡稱會商錄播系統)是在天氣預報電視會商系統中對電視會商會議提供實時錄制、直播、點播等服務的重要平臺[2],其錄制的文件為雙路視頻文件,包括視頻圖像及計算機圖像。在實際應用中,兩路文件通過時間軸自動關聯,同時播放。觀看者通過Web頁面登錄會商錄播系統界面,即可對電視會商節目進行直播、點播收看。
隨著手機、平板PC等移動終端的普及以及3G網絡的不斷完善,基于移動終端操作系統平臺的應用軟件開發成為目前電信新的技術發展趨勢。2012年11月數據顯示,Android占據全球智能手機操作系統市場76%的份額,中國市場占有率為90%[3],具有巨大的市場和發展潛力,有望在未來幾年成為移動電子設備上占有量最大的操作系統。
本文設計一款基于Android操作系統的氣象會商流媒體客戶端應用軟件(以下簡稱Android客戶端),采用Android操作系統的移動終端(手機、平板PC等),可借助該應用,訪問中國氣象局氣象會商錄播平臺,點播瀏覽音視頻節目。
基于Android平臺軟件應用使用戶可在具備網絡條件的各種環境下便捷地使用Android系統手機、平板PC等移動終端收看預報會商,使用環境由傳統的個人PC向移動終端拓展,有效地提高了會商錄播系統的使用率,擴大其使用范圍。
Android是由Google公司推出的一種開源的移動操作系統,以精簡的Linux操作系統為內核,由操作系統、中間件、用戶界面和應用軟件組成。Android采用軟件堆層的架構,主要分為3個部分[4]:底層以Linux內核工作為基礎,由C語言開發,只提供基本功能;中間層包括函數庫Library和虛擬機Virtual Machine,由C++開發;最上層是各種應用軟件,由各公司自行開發,以Java作為編寫程序的一部分[5]。如今越來越多的移動設備都在使用Android作為其操作系統,Android不僅具備開源的優勢,而且擁有靈活便捷的應用程序控制,以及其他移動平臺所具備的所有功能。
本應用依托天氣預報電視會商錄播系統設計。會商錄播系統由電視會商系統主控中心音視頻、計算機分配切換子系統采集信號,通過硬件編碼器將音視頻信號壓縮編碼成IP流,推送至中國氣象局局域網錄播服務器以及部署于Internet DMZ區的外網錄播服務器,通過服務器提供局域網、Internet用戶的在線直播、點播服務。會商錄播系統采集的主視頻流分辨率為1080p高清信號[6],計算機信號分辨率為1 280×1 024,系統結構示意圖如圖1所示。

圖1 天氣預報會商錄播系統結構示意圖
考慮到Android平臺終端移動接入的特點,網絡帶寬受限,設計將會商錄播系統采集的視頻信號利用H.264編碼技術[7],進一步壓縮轉存為低碼率、低畫面分辨率的流媒體數據,適于Android平臺流媒體客戶端訪問。目前主流的視頻網站提供商針對Android移動終端提供的定制流媒體發布視頻分辨率一般在QCIF(176×144)和CIF(352×288)之間[8]。本系統主視頻分辨率為CIF,計算機信號分辨率為QCIF。在客戶端軟件上提供兩種不同網絡狀況下的應用模式,若接入網絡為WCDMA 3G[9]移動網絡,用戶可選擇3G模式收看天氣預報會商主視頻,幀率為15幀/秒(f/s)左右;若通過WiFi寬帶接入Internet公網,用戶可選擇WiFi模式下收看會商計算機雙流視頻,幀率為15 f/s左右。通過可變幀率以及差值視頻編碼的技術路線解決氣象系統對高分辨率流媒體顯示的需求。
流媒體數據傳輸協議選擇RTSP實時流協議[10],其定義了一對多應用程序高效通過IP網絡傳送多媒體數據的方法。RTSP在體系結構上位于RTP和RTCP之上。它使用TCP或RTP完成數據傳輸。使用RTSP時,客戶端和服務器都可以發出請求。在Android平臺客戶端軟件通過設置循環緩沖區以及音頻高優先級傳輸的方式,保證音頻數據清晰、流暢呈現。
Android客戶端應用由服務器端軟件、流媒體服務器軟件、數據庫服務器軟件和基于Android終端的客戶端軟件組成。
其中,服務器端軟件主要的功能是給Android客戶端軟件提供與視頻點播系統相關的數據服務,同時提供對數據和系統配置信息的維護功能。流媒體服務器主要提供對客戶端視頻的實時點播的功能,支持多用戶并發訪問。數據庫服務器軟件主要提供整個系統用戶和分組的相關數據的存儲的功能。基于Android的客戶端軟件主要支持用戶登錄、視頻點播、視頻搜索等功能。
本部分主要描述Android會商點播軟件各模塊的軟件設計。考慮到系統服務器端軟件的穩定性,服務器端軟件基于Windows Server 2003內部的IIS組件,服務器端的軟件主要基于ASP.Net技術實現。
Android客戶端與服務器端的通信基于HTTP[11]協議,數據傳輸以XML格式和二進制格式(主要是視頻縮略圖等,由會商錄播系統提供共享)。視頻播放界面以網頁的形式嵌入到Android應用程序內(以Android Web View和Web Kit支持)。
系統總體結構及各個模塊之間的通信與依賴關系如圖2所示。
服務器端主要以網站的形式發布,為客戶端提供數據服務和后臺維護功能。服務端是在原有會商錄播系統的硬件基礎上開發的,基于會商錄播系統的視頻編碼器和錄播系統開發。Android客戶端與服務器端的通信基于HTTP協議,傳輸的數據格式基于XML[12]。

圖2 系統各模塊之間通信關系圖
服務器端軟件邏輯設計如下:
1)BO:業務邏輯層,包括系統登錄、權限認證和相關信息的維護的業務邏輯相關操作組件。
2)DAO:數據訪問層,主要提供數據訪問和存儲的功能,包括對數據庫的操作和對本地配置文件的操作。
3)Entity:實體,對應數據庫層的表,便于以面向對象的方式對數據和配置文件的存儲訪問,提高系統可重復利用和擴展性。
4)UI:用戶界面層,主要是面向后臺管理和Android客戶端提供服務的模塊。Aspx包主要是面向后臺管理系統的界面,http handlers模塊主要是面向Android客戶端以HTTP方式的提供視頻信息的查詢與讀取功能,通信數據格式主要以XML為主。
服務器端軟件模塊調用關系圖如圖3所示。

圖3 服務器端軟件模塊調用關系圖
客戶端主要是解析從服務器端請求的數據進行解析,然后在頁面上顯示出來。主要分為3層:通信層,數據解析層,界面層。
1)通信層
通信層使用的通信協議是HTTP協議,通信的方式是客戶端請求一個指定的URL地址(同時附帶若干個參數,如會商視頻的類型),服務器端根據客戶請求的地址和參數,以XML格式向客戶端發送相應的請求結果數據。
客戶端每次都以異步的方式發送一個請求,然后等待服務器響應,服務器響應并返回數據以后通知數據解析層解析數據,數據解析層解析完數據以后通知界面層更新界面。
2)數據解析層
數據解析層的主要作用是解析服務器端返回的XML格式的數據。
3)界面層
界面層的主要功能是與用戶交互,如接受用戶輸入和點擊等,根據用戶在界面上的操作向服務器端發送不同的請求。例如在頁面的視頻類型列表中點擊視頻類型(如早間會商等)列表中的某一條,即向服務器端發送一個請求,要求返回對應視頻類型的視頻信息相關數據,返回的結果由數據解析層處理。
界面層作為與用戶交互的接口,所有向服務器發送的請求都是由用戶在界面層上的某個操作觸發的。
啥都有:2011年的農歷新年伊始,趕集網的一部視頻廣告開始陸續出現在銀屏公交、樓宇電視等媒介上。廣告依靠影星姚晨人氣和一頭驢子的幽默表演吸引了許多人的關注。“xxx,啥都有”的廣告詞由于朗朗上口,迅速被網友進行惡搞,趕集網廣告海報中的驢子被換成了機器貓、憤怒的小鳥和變形金剛等形象,廣告語也配合不同的形象進行了改變。
綜上所述,客戶端軟件模塊調用關系圖如圖4所示。客戶端軟件執行流程為:界面層觸發請求,服務器響應請求并返回數據,解析層解析數據并通知界面更新,顯示數據或切換界面。

圖4 客戶端軟件模塊調用關系圖
客戶端軟件邏輯設計如下:
1)Net包:主要負責網路通信的模塊。
2)Entities:實體,對應數據庫層的表,便于以面向對象的方式對數據和配置文件的存儲訪問,提高系統可重復利用和擴展性。
3)DAO:數據存儲與訪問,主要負責解析XML數據等功能。
4)Services:運行于Android后臺的服務進程,主要負責綜合服務信息的檢測和與服務器端的通信,以防止界面操作不流暢等現象出現。
5)Util:所有的輔助性類。
電視會商流媒體文件與普通視頻網站傳輸的流媒體文件區別在于電視會商同時傳輸兩路信號——視頻信號和計算機信號。在設計Android流媒體點播軟件時,需要專門設計能夠同時解析2路流媒體文件的播放器。在本系統設計中,雙視頻文件進行同步播放是通過Flash客戶端與流媒體服務器(Flash Media Server)同時建立2個TCP連接,通過TCP傳輸視頻數據,在客戶端解碼進行播放。當其中一路視頻在緩沖的時候,另一路視頻暫停播放,等到緩沖完畢后再同時播放,以此實現視頻和計算機信號的同步播放。
視頻點播模塊主要用到的類有Flash Action Script里的NetConnection類、NetStream類、Video類。NetConnection類主要用于與Flash Media Server建立TCP連接,然后在Flash客戶端和Flash Media Server之間傳輸數據。通過NetConnection類與Flash Media Server建立連接以后可以通過該連接建立一個流(類似操作本地文件流),這個流對象就是NetStream類的一個實例對象。在代碼中用下列語句實現:
vgaStream=new NetStream(vgaConnection);
在與服務器端建立連接時需要注冊一個事件,即連接成功后通知客戶端執行其他操作。以下是初始化Net-Connection對象和注冊事件以及請求連接的代碼:
videoConnection=new NetConnection();
videoConnection.addEventListener(NetStatusEvent.NET_STATUS,videonetStatusHandler);
videoConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
videoConnection.connect(videoUrl);
Android客戶端將用戶名和密碼以HTTP方式提交給服務器端軟件驗證,只有在驗證之后才能切換到系統主界面,如圖5所示。在地址欄輸入服務器地址,即可登錄電視會商點播平臺服務器,如圖6所示。
用戶點擊“會商視頻服務”選單,可進入二級頁面,如圖7所示。用戶根據需求選擇視頻所屬類別。

圖5 登錄界面(截圖)

圖6 服務器地址界面(截圖)

圖7 選單界面(截圖)
本軟件提供視頻搜索功能,輸入關鍵字,點擊“搜索”,可對所需觀看視頻進行檢索,如圖8所示。

圖8 搜索功能界面(截圖)
用戶進入會商視頻服務功能后,進入到視頻列表頁面。每頁按時間先后順序顯示10條列表,并具備翻頁按鈕,如圖9所示。

圖9 視頻列表界面(截圖)
用戶點擊要觀看的視頻文件名,即可進入視頻播放界面。在播放時,可選擇播放、暫停、停止,并可拖動進度條選擇播放進度。
點擊“退出”鍵可直接退出播放界面。
本軟件已成功在Android系統的手機上進行測試,授權用戶可登陸到點播平臺,選擇需要觀看的會商文件進行點播。實際播放界面如圖10所示。

圖10 手機收看會商節目界面
本文實現了基于Android操作系統的電視會商流媒體點播平臺,分析了該平臺的總體架構,服務器端、客戶端的軟件設計,以及UI設計。該設計具有一定的通用性和開放性,對視頻會議、流媒體數據的Android開發有借鑒意義。Android會商點播軟件與中國氣象局天氣會商錄播平臺相銜接,將傳統的基于PC的會商錄播平臺移植到Android客戶端,并成功在Android3.0以上版本的手機平臺上穩定運行,為移動辦公提供了有力支撐,具有極大的業務前景。
[1]姚鴻,李春來,鄧鑫,等.視頻會議在氣象業務中的應用前景分析[J].電視技術,2011,35(17):108-113.
[2]吳廣智.VOD視頻點播核心技術研究[J].中山大學學報論叢,2006(2):126-128.
[3]貢知洲,路昭亮.Android發展的分析和研究[J].價值工程,2013(2):185-186.
[4]王寧國,吳翠先,劉暢欞,等.基于Android的無線視頻監控終端的設計及實現[J].數字技術與應用,2012(2):124-125.
[5]孫宏明.Android手機程序設計入門、應用到精通[M].北京:中國水利水電出版社,2012.
[6]李棟,李媛敏,張秋華,等.1080p高清視頻會議系統設計應用案例[J].電視技術,2010,34(10):108-111.
[7]李彥東,許生旺.AVS-P2和H.264標準的比較[J].無線電工程,2006(8):48-50.
[8]蔣維,孟利民.3G網絡H.264視頻監控系統的設計和實現[J].杭州電子科技大學學報,2011,31(5):71-74.
[9]李嚴冰,張媛.WCDMA 3G無線網絡建設、優化技術探討[J].法制與經濟,2009(1):116-119.
[10]霍龍社,甘震.移動流媒體協議綜述[J].信息通信技術,2010(4):6-10.
[11]葉強.超文本傳輸協議——HTTP/1.0[J].科技情報開發與經濟,2004(8):226-271.
[12]彭新宇,姚振強.XML技術在嵌入式系統中的應用[J].計算機應用研究,2003(8):133-135.