董建偉
(公安邊防部隊士官學校,云南·昆明 650214)
隨著因特網 (Internet)技術的發(fā)展,公安邊防部隊在執(zhí)法執(zhí)勤過程中對多媒體通信的需求也越來越高,視頻直播業(yè)務等逐漸成為公安邊防部隊的工作以及生活的一部分,例如視頻會議、視頻圖傳、視頻監(jiān)控等在邊防部隊各項工作中的應用,以及視頻點播在部隊業(yè)余文化生活中的應用。
如何架設視頻直播網站,有多種技術方案可選,可以基于視窗媒體服務器 (Windows Media Server)技術架設①張紅生,基于Windows Media流媒體技術的自主視聽中心的設計與管理.中國電化教育,2006,(12):106-107或者可使用主動型網絡攝像頭 (Active WebCam)來架設。每種技術方案都有自己的優(yōu)缺點,本文通過邊防工作中應用的一些具體實例,給出使用動畫流媒體服務器(FMS)架設直播系統(tǒng)的一種方案。動畫流媒體服務器 (FMS)具有部署便捷、運行穩(wěn)定、使用方便等優(yōu)點,是諸多多媒體應用的服務器端的主要應用平臺。
FMS為動畫流媒體服務器 (Flash Media Server)的縮寫,是奧多比 (Adobe)公司②Adobe公司創(chuàng)建于1982年,是世界領先的數字媒體和在線營銷解決方案供應商。開發(fā)的一個多媒體應用平臺,是一個完全基于軟件的實時通訊環(huán)境??蓱糜谟脩糁g的相互通訊,該平臺集成了多媒體交互的特性,同時又具有音頻和視頻流實時傳輸等特點。FMS支持實時消息傳輸協(xié)議RTMP(Real Time Messaging Protocol)和實時媒體流協(xié)議RTMFP(Real Time Media Flow Protocol)③陳鋒鋒,基于RTSP的流媒體傳輸系統(tǒng)的應用開發(fā).南京郵電大學,2013,153頁,由于實時消息傳輸協(xié)議RTMP和實時媒體流協(xié)議RTMFP都是奧多比(Adobe)公司為更好的支持其多媒體程序播放器 (Flash Player)開發(fā),因此結合多媒體程序播放器 (Flash Player),可以方便地實現(xiàn)視頻點播、直播與多播。
圖1 系統(tǒng)架構圖
公安邊防部隊視頻直播系統(tǒng)網絡結構圖如圖1所示,由視頻采集部分、視頻服務器、用戶終端和網絡設備等組成,整個系統(tǒng)通過網絡設備進行組網并接入因特網 (Internet)。
視頻采集部分由攝像機和視頻終端處理機構成,由于視頻采集點不止一個,多臺終端處理機通過以太網連在一起。①William B Sanders.Learning Flash Media Server 3.Beijing:O’Reilly Media,Inc,2008
在公安邊防部隊網內,視頻服務器與視頻采集部分處于同一個局域網,終端處理機可以方便地把直播視頻上傳到視頻服務器②張榮榮,DNS系統(tǒng)負載均衡方案的設計與原型實現(xiàn).北京郵電大學,2011,167頁。為保障網絡安全,在局域網出口配置防火墻。
在公安邊防部隊的實際應用中,用戶終端可以是個人電腦、單兵圖傳設備、動中通等邊防常用裝備。
系統(tǒng)運行原理如下,視頻終端處理機通過攝像機采集圖像數據,然后對數據進行壓縮和編碼,形成flash視頻流,之后使用流媒體傳輸協(xié)議 (RTMP)將視頻發(fā)布到視頻服務器,視頻服務采用FMS架設③班凱,李偉華,基于FMS的Web視頻、音頻通信系統(tǒng)設計.航空計算技術,2009,39(5),128-131;用戶終端使用多媒體程序播放器 (Flash Player)作為代理,與服務器建立連接后,從服務器獲取視頻并顯示,整個系統(tǒng)的運行流程如圖2所示。(三)負載均衡
為解決大量并發(fā)訪問問題,使用基于DNS的負載均衡技術,該技術具有實現(xiàn)簡單、實施容易、成本低、適用于大多數傳輸控制協(xié)議/網絡互聯(lián)協(xié)議 (TCP/IP)應用的優(yōu)點。
具體的實施方案如下,在多個地理位置區(qū)域部署鏡像視頻服務器,每個鏡像服務器在寬帶運營商的域名系統(tǒng) (DNS)服務器上使用與視頻服務器相同的域名。視頻服務器發(fā)布直播視頻的同時將視頻發(fā)布到各個鏡像服務器,為保證服務器與鏡像服務器之間的通信鏈路,視頻服務器與鏡像服務器之間使用虛擬專用網 (VPN)專用通道。由于鏡像服務器和服務器上的視頻內容相同,當終端用戶通過域名訪問直播視頻時,不同地域的域名系統(tǒng) (DNS)服務器將會把同一域名解析到不同的網絡互聯(lián)協(xié)議 (IP)地址,這樣便實現(xiàn)把大量并發(fā)訪問分配到多個服務器,有效地實現(xiàn)負載均衡。
與系統(tǒng)架構對應,系統(tǒng)軟件由三部分構成,即視頻采集軟件、服務器軟件和終端用戶軟件。其中,基于客戶機/服務器 (C/S)架構時,終端用戶軟件分為個人電腦 (PC)應用、智能手機應用和平板應用,基于瀏覽器/服務器 (B/S)架構時,終端應用為對應終端平臺上的瀏覽器,并且瀏覽器需要多媒體程序播放器 (Flash Player)插件的支持。每種軟件的功能說明如下:
視頻采集軟件:采集直播視頻并向FMS傳輸視頻;
服務器軟件:接收采集軟件上傳的視頻、發(fā)布直播視頻、處理視頻播放請求;
終端用戶軟件:請求視頻并播放。
要設計開發(fā)這些軟件,需要安裝兩個軟件以搭建開發(fā)環(huán)境,即動畫流媒體服務器 (Flash Media Server)和奧多比閃客專業(yè)版 (Adobe Flash Professional)。動畫流媒體服務器 (FMS)為服務器軟件,同時支持二次開發(fā),奧多比閃客專業(yè)版 (Adobe Flash Professional)為終端用戶軟件提供開發(fā)環(huán)境。在本論文中,僅闡述軟件設計方法及關鍵代碼,對于編程細節(jié)文中不做闡述。
動畫流媒體服務器 (FMS)支持二次開發(fā),由于其提供一個應用框架,所有動畫流媒體服務器 (FMS)的二次開發(fā)非常簡單,只需要在動畫流媒體服務器 (FMS)的安裝目錄的應用 (Application)目錄下新建應用子目錄,然后在新建的應用目錄下使用 Actionscript語言編寫一個main.sc腳本文件,在main.asc文件中集中編寫關注的業(yè)務代碼即可。雖然鏡像服務器與視頻服務器上的視頻內容相同,對終端用戶的視頻請求響應也相同,但是由于服務器還有像鏡像服務器發(fā)布直播視頻,因此兩種的運行軟件是不同的。對于鏡像服務器軟件,只需編寫一個Application.onConnect函數,在函數中調用application.acceptConnection(client)函數即可,對于其他的事件處理交由FMS應用框架處理。與鏡像服務器相比,服務器還要向鏡像服務器發(fā)布直播視頻,因此,在服務器的main.asc文件中,需要添加application.onPublish函數,在該函數中將直播視頻發(fā)布到鏡像服務器,函數關鍵代碼如下:
function(client,myStream)①JianFeng Lu,Yao Zhang.Mobile Application Development Based on Adobe AIR.IEEE,2013,376-378
圖2 網絡測試環(huán)境
視頻采集軟件運行于視頻終端處理機,劃分為用戶界面部分和業(yè)務邏輯部分。用戶界面部分在本文中不做闡述。業(yè)務邏輯部分的任務就是從攝像機采集圖像形成視頻流并將視頻流發(fā)布到視頻服務器。
該部分軟件使用奧多比閃客專業(yè)版 (Adobe Flash Professional)開發(fā),在終端處理機上需要一個多媒體程序運行時 (Flash Runtime)為軟件提供運行環(huán)境,多媒體程序運行時 (Flash Runtime)可由多媒體程序播放器 (Flash Player)或者奧多比集成運行時 (AIR)提供,在終端處理機上選用多媒體程序播放器 (Flash Player)。由于該開發(fā)環(huán)境提供了眾多功能豐富的開發(fā)模塊,例如:視頻采集、數據傳輸、視頻編碼等功能模塊,所以,并不需要從零編寫代碼,很多工作由多媒體程序播放器 (Flash Player)隱式執(zhí)行。
業(yè)務邏輯處理部分使用actionscript語言編寫,基于事件編程,當與視頻服務器連接成功后開始錄制視頻并發(fā)布到服務器。
用戶終端軟件使用Adobe Flash Professional開發(fā),使用actionscript語言編寫代碼,終端上也需要Flash Runtime的支持,但不同的終端Runtime是不同的,對于使用windows或linux操作系統(tǒng)的PC選用Flash Player,對于移動終端,基于android智能手機或平板電腦使用 AIR for android,基于IOS的智能手機或平板電腦,使用AIR for ios。
該部分軟件的業(yè)務邏輯處理比較簡單,與服務器或鏡像服務器建立連接后獲取直播視頻并顯示即可。
編碼完成后,將文件保存為fla格式,如保存為videoPlay.fla,然后使用 Adobe Flash Professional編譯發(fā)布,發(fā)布為PC應用時選擇發(fā)布目標為Flash Player,發(fā)布 Flash和Html兩種格式,相應會生成videoPlay.swf和videoPlay.ht-ml兩個文件;當發(fā)布為android或ios應用時,選擇目標分別為AIR for android和AIR for ios,則會生成相應兩種平臺的安裝文件包。
用戶終端軟件使用奧多比閃客專業(yè)版(Adobe Flash Professional)開發(fā),使用actionscript語言編寫代碼,終端上也需要多媒體程序運行時 (Flash Runtime)的支持,但不同的終端運行時 (Runtime)是不同的,對于使用視窗(windows)或者勒紐克斯 (linux)操作系統(tǒng)的個人電腦 (PC)選用多媒體程序播放器 (Flash Player)。
該部分軟件的業(yè)務邏輯處理比較簡單,與服務器或鏡像服務器建立連接后獲取直播視頻并顯示即可。
編碼完成后,將文件保存為fla格式,如保存為videoPlay.fla,然后使用奧多比閃客專業(yè)版(Adobe Flash Professional)編譯發(fā)布,發(fā)布為個人電腦 (PC)應用時選擇發(fā)布目標為多媒體程序播放器 (Flash Player),發(fā)布Flash和Html兩種格式,相應會生成videoPlay.swf和videoPlay.html兩個文件。
由于測試條件限制,將服務器軟件和視頻采集軟件運行于同一臺物理主機,測試網絡環(huán)境如圖3所示。
服務器硬件環(huán)境如下:
CPU:Intel酷睿i53470、內存:4G
軟件測試環(huán)境如下
服務器操作系統(tǒng):windows7
手機和平板系統(tǒng):android4.0
圖3 視頻采集圖像
視頻服務器:Flash Media Server 4.5
Web服務器:Apache 2.2
瀏覽器:IE、360、UC、android原生瀏覽器
Flash Runtime:Flash Player11、Flash AIR3.2
圖4 瀏覽器播放畫面
對系統(tǒng)進行了長達一周的測試,測試過程中視頻傳輸流暢,未出現(xiàn)死機或拒絕服務等異常。視頻采集部分測試結果如圖4所示,當點擊開始(start)按鈕后,開始采集視頻并向服務器發(fā)布。對于終端應用軟件測試,由于視頻顯示結果類似,本文僅給出使用瀏覽器進行直播視頻觀看的測試結果如圖5所示,對于其他方式的測試結果本文不再貼出。
通過實際開發(fā)和部署實踐可知,使用動畫流媒體服務器 (FMS)架設多媒體服務網站具有實施簡便、系統(tǒng)運行穩(wěn)定、帶寬利用率高等優(yōu)點,是進行公安邊防視頻通信多媒體網站架設的首先技術,可以為公安邊防部隊提供一定程度的視頻直播業(yè)務。但在實際的測試中發(fā)現(xiàn),雖然視頻傳輸流暢,但視頻延時較大,在本測試環(huán)境中,視頻的時延約為5秒,這又對一些邊防部隊中實時性要求比較高的工作造成了一定的影響。另外,本視頻直播系統(tǒng)沒有放在公網上測試,基于虛擬專用網 (VPN)通道的鏡像服務器性能沒有得到測試,在高并發(fā)情況下整個系統(tǒng)的運行性能也沒有得到足夠的驗證,這些問題都有待進一步研究與驗證。