龔主前 張小生 廣東機電職業(yè)技術學院 廣東廣州 510550
?
基于WEB的視頻通訊系統(tǒng)設計
龔主前 張小生 廣東機電職業(yè)技術學院 廣東廣州 510550
【文章摘要】
本文基于Flash 視頻聲頻獲取和數據傳輸方式,結合RTMPS和HTTP協(xié)議,實現(xiàn)視頻和音頻的數據傳輸。首先構建合適的WEB服務器和數據庫服務器,為遠程訪問WEB頁面提供基礎。再通過瀏覽器中Flash PLAYER播放器插件,獲取視頻數據和音頻數據。同時分析點對點通信的原理,對系統(tǒng)進行優(yōu)化設計,提高通話質量和減少數據傳輸時延,獲得更好的用戶體驗,并設計好合適的數據庫,以更好地保存用戶數據。
【關鍵詞】
終端;Web;Flash Player;視頻
視頻通訊發(fā)展由開始的C/S (Client/ Server)結構變成現(xiàn)在的 B/S(Browser/ Server)結構。在C/S架構下,視頻聊天平臺是軟件而不是網站。網站會員通過下載網站提供的客戶端登陸,然后在統(tǒng)一的軟件平臺里進行視頻交流。軟件則以常規(guī)軟件模式的P2P技術進行開發(fā),其開發(fā)成本極高、開發(fā)周期長。
B/S結構對服務器性能以及帶寬要求比較高。但開發(fā)成本低、周期短。由于FMS等視頻服務器通過不斷的改版對視頻以及音頻的壓縮都是非常優(yōu)秀,而且不需要做任何開發(fā),大大節(jié)約了開發(fā)成本和時間。也不存在跨越防火墻以及NAT穿透等高成本網絡功能開發(fā)費用。通過Flash開發(fā)工具,在界面開發(fā)以及功能開發(fā)上所花費的時間遠遠小于開發(fā)軟件或插件需要花費的時間。
基于WEB的視頻通訊系統(tǒng)的開發(fā)需要有以下技能和知識:HTTP知識,HTML語言知識,F(xiàn)LEX開發(fā)工具的使用,Action Script 語言知識,PHP編程語言知識,SQL數據庫標準數據查詢語言。
1.1Flash的安裝
這里使用的是Flash Builder 4。到官方主頁下載該軟件,然后安裝并注冊后就可以開發(fā) Flash 應用了。依次點擊:文件 –> 新建–> FLEX 工程,就可以建立一個新的工程。
1.2WEB服務器搭建
Web 服務器的搭建分兩個部分,一個是 HTTP 服務器搭建,另一個是PHP 腳本程序的安裝和MYSQL安裝。這里選擇ApacheHTTP服務器。
Apache是最流行的HTTP服務器軟件之一。快速、可靠、可通過簡單的API擴展,Perl/Python解釋器可被編譯到服務器中,完全免費,完全源代碼開放。
MySQL是一個小型關系型數據庫管理系統(tǒng),目前被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小網站為了降低成本而選擇了MySQL作為網站數據庫。
1)到APACHE的網絡站下載APACHE WEB SERVER http://www.apache.org/
2)到php的網絡站下載php解析器http://www.php.net/
3)到mysql的網站下載 mysql http:// sourceforge.net/projects/mysql/
將安裝文件打開后安裝即可,然后配置Apache的http.conf文件??梢园丫W站的根目錄自定義你想要的目錄。
加入PHP塊可以讓其執(zhí)行PHP腳本:AddType application/x-httpd-php.php,AddType application/x-httpd-php .php3
PHP安裝目錄中有個配置文件php.ini,在里面添加MYSQL執(zhí)行塊可以讓其與MYSQL互通:extension=php_mysql.dll 。
修改完后重啟 HTTP服務和MYSQL服務器,就可以完成剛才的配置。
2.1整體工作流程
基于 WEB 的視頻通訊整體流程如下:首先從客戶端瀏覽器的Flash Player 插件中輸入你的注冊名稱或者呼叫人的名稱,點擊“連接”或者“呼叫”后,F(xiàn)lash Player會向網絡發(fā)送HTTP請求服務器接受其數據,Apache服務器接收到其請求分析請求來源后,如果是合法請求將交由PHP腳本處理其請求數據,PHP驗證數據的合法性后就向MYSQL數據庫申請?zhí)幚頂祿?,MYSQL數據庫將處理結果交由PHP再次處理,PHP將處理的結果(XML格式)進一步交由Apache服務器處理并交由輸出控制端進行輸出,輸出后根據其來路地址經過網絡返回給客戶端Flash Player,F(xiàn)lash Player通過Action Script 語言處理好結果后將結果以界面的形式呈現(xiàn)給用戶看。
2.2客戶端設計
圖1 客戶端初始界面
圖2 客戶端連通服務器后的界面
客戶端是Flash的界面設計,包含注冊用戶,呼叫用戶,顯示對方視頻,顯示本地視頻等。圖1是客戶端初始界面。輸入名稱后點擊“連接”按鈕,即可通過內部的注冊URL向服務器申請并注冊輸入的用戶名稱。注冊成功后才可以讓網絡上的其他用戶找到你,界面變成圖2那樣。
在圖2中 編號2的用戶名稱輸入框輸入對方的用戶名稱后點擊“呼叫”按鈕即可呼叫對方。對方接到你的呼叫申請后點擊接受后即可以互相看到對方的視頻和聽到對方的聲音。圖3為互相連通后的顯示界面,編號3和4分別為對方視頻顯示區(qū)域和本地視頻顯示區(qū)域。
點擊圖中“掛斷”可以斷開和對方的視頻連接。點擊圖中“斷開連接”后可以斷開自己和服務器的連接,同時網絡上的用戶也找不到你了。
2.3服務端設計
服務端只要有 APACHE 提供的 HTTP 服務,PHP腳本程序處理客戶端請求,以及MYSQL 數據庫存儲用戶的注冊數據。
Apache配置:
設置Apache根目錄下的video 為本研究的工作目錄。Apache根目錄下的flex/ Reg. video. ison.php 文件為PHP 處理客戶端請求文件。
MYSQL 下的 test 數據庫為工作數據庫,regs 數據表為工作表。
當客戶端向服務器申請注冊時會向服務器發(fā)送2個參數數據:
Identity:為每個請求的標識,由2個MD5 加密隨機字符串組成的64位字符,這樣有利于服務器拒絕處理非法的請求,保證通訊的安全性。
Username:為需要注冊的用戶名稱,此參數將作為您的用戶名寫入數據庫。
當某一用戶呼叫另一用戶時也發(fā)送兩個參數:
Friends:告訴服務器你將要呼叫的用戶名稱,服務器根據PHP腳本查詢數據庫判斷該用戶是否在線以及是否空閑來處理是否需要連接。
Time:為你向對方發(fā)送請求的時間戳。數據庫設計:
需要設置4個字段,分別是 id, username, startusid, updatetime。分別記錄數據的條目,用戶名稱,注冊的STARTUS號,最近更新時間。
代碼如下:
PHP設計:
核心邏輯PHP執(zhí)行文件名稱Reg.video. ison.php,主要包括四個部分:
加載和初始化數據庫連接類:
加載數據庫連接類文件:require_once 'include/DBconnect.php';
初始化數據庫連接類:$db = new DBconnect();
獲取URL請求數據:3個外部請求數據。
獲取用戶名稱:$user = isset($_ GET['username']) ? $_GET['username'] : null;
獲取網絡標識:$stratusid = isset($_ GET['identity'])?$_GET['identity']:null;
獲取呼叫人名稱:$friends=isset($_ GET['friends'])? $_GET['friends'] :null;
處理用戶注冊請求:如果數據庫中已經存在用戶注冊名稱,則只需更新時間狀態(tài)字段updatetime,否則向數據庫中新增一條記錄。
圖3 客戶端呼叫成功后的界面
處理用戶呼叫數據:如果用戶呼叫的名稱存在,則判斷其最后更新時間是否超時,如果未超時則進行呼叫,否則呼叫失敗。
其輸出的內容都是標準的XML格式,F(xiàn)lash客戶端能夠讀懂其返回的XML數據包內容。
3.1客戶端的改進
本研究只是一個測試版本,客戶端設計可以更細膩一點,可以增加用戶操作日志,網絡流量監(jiān)控日志,視頻設備和麥克風設備監(jiān)控等功能,還可以添加一些選項,比如是否接受對方的聲音或者視頻,是否把我的視頻或者聲音傳輸到對方。還有可以增加調節(jié)音量,調節(jié)視頻的清晰度等額外功能。
3.2服務端的改進
服務端改進主要在Apache并發(fā)性和PHP語言代碼優(yōu)化,數據庫優(yōu)化等方面。
Apache的并發(fā)性主要是服務器配置由服務器的硬件還有網絡接入帶寬決定,Apache的并發(fā)數只需修改httpd.conf 文件即可以達到。并發(fā)數過大,容易消耗很大的CPU和帶寬。
PHP語言代碼優(yōu)化方面主要是在算法的高效性和代碼的安全性。
數據庫優(yōu)化方面:索引能提高訪問表中一條或多條記錄的特定查詢效率。因此,適當的索引調優(yōu)是很重要的。使用存儲過程大有益處,可以把用于完成相同任務的S Q L語句和邏輯在一個地方進行設計、編碼、測試,還可以節(jié)省因執(zhí)行大塊S Q L腳本而增大的網絡通信量,從而提高服務器效率。
本文首先分析比較當下的視頻通訊技術,然后重點介紹了基于WEB的視頻通訊系統(tǒng)開發(fā)和設計過程,包括系統(tǒng)環(huán)境構建、系統(tǒng)客戶端和服務端的設計。然后進行了系統(tǒng)的分析和優(yōu)化。
本文還有很多地方需要進一步改進和完善。比如功能方面,可以做成一對多電視廣播或多對多的視頻會議等。結構方面,可以將各個功能獨立化,比如視頻和聲音相互獨立,還可以增加文字發(fā)送功能等。PHP腳本語言方面則可考慮使用緩存技術或優(yōu)化內存增加其抗壓能力。
【參考文獻】
[1]孫晗波.Adobe Flex 3程序設計指南[M].北京:電子工業(yè)出版社,2009年
[2]Nicj Kew著,張立強等譯. Apache模塊開發(fā)指南[M].北京:電子工業(yè)出版社,2008年
[3]劉明偉,任永攀,黃興.Flash與后臺:ASP/ ASP.NET/PHP/Java Script/Delphi總動員[M].北京:清華大學出版社,2007
龔主前(1971-),男,廣東機電職業(yè)技術學院副教授、博士。研究方向:無線通信。
【作者簡介】