在廣域網中,由於網路的結構紛繁複雜、而且其實時狀況又是千變萬化的,所以,要使廣域網中的視訊聊天達到一個令人滿意的效果,存在諸多挑戰。這次釋出的GG 3.7版本嘗試在這一方向上做一些努力,據我自己測試,相比之前版本,新版本GG的視訊聊天的效果確實有較大提升。本文不僅會分享GG的最新原始碼,而且也會把我在過去專案中總結的一些語音視訊聊天的優化心得分享給大家。
一.GG V3.7 新增功能展現
針對視訊聊天的優化,主要體現在以下幾點,為了方便介紹,我將VideoForm的窗體設計的截圖放在這裡:
1.實時顯示對方的麥克風狀態(啟用或禁用),如圖中A。
2.實時顯示對方的攝像頭狀態(啟用或禁用),如圖中B。
3.實時顯示對方視訊的編碼質量,如圖中D。取值0~31,值越小,視訊越清晰。
4.允許控制對方視訊編碼質量的策略:根據網路情況自適應,或直接手動指定編碼質量(下拉選單選擇:優、良、中、差)。如圖中C。
5.控制對方攝像頭的採集視訊在高解析度(640*480)和低解析度(352*288)之間切換。如圖中E。
6.實時顯示網路通道的狀態(類似訊號強度)。如圖中F。
7.介面上的勾選框用於控制開啟或關閉自己的攝像頭、麥克風、揚聲器,以及顯示自己視訊的小視窗。
GG執行起來之後,視訊聊天的截圖如下所示:
二.視訊聊天優化經驗
關於本次GG更新的原始碼,就不多講了,大家下載了自己去看,相對還是比較簡單的。接下來,我總結一下自己以往做視訊聊天優化的經驗。
如果網路情況相當好,那自然可以選擇流暢高清的視訊對話(如高的幀率、高的採集解析度、高的視訊編碼質量等)。然而,現實總是殘酷的,所以,針對現實情況,我們必須有所權衡和取捨。
1.優先保證語音流暢。
(1)語音資料的流量很小,一般小於5k/s。但是,語音對網路的抖動要求較高,較大的網路抖動,就會導致語音一卡一卡的。
雖然GG使用的OMCS內部內建抖動緩衝區JitterBuffer,但也只能一定程度地緩解卡的問題,而且是以增加語音延遲為代價的。
(2)避免通過TCP一次性傳送非常大塊的資料Blob,因為這樣會導致在傳送Blob期間,任何語音資料包都傳送不出去。建議是將大的Blob拆分成多個小塊傳送。
2.在網路差時
(1)首先降低攝像頭的採集解析度,如去掉上面截圖窗體上“高解析度”選項的勾勾。
(2)如果視訊或語音還是卡,則降低視訊的編碼質量。如果是手動調節,則依次下調視訊編碼質量:優->良->中->差。
(3)還可以降低攝像頭採集的幀頻(在服務端的配置檔案中設定),由於GG內部會自動根據網路情況進行智慧棄幀,所以,這個操作對GG而言就沒多大必要了。
(4)如果語音還是卡,那麼,就關掉視訊吧,只進行純語音對話。自己這邊將窗體上的“攝像頭”前面的勾勾去掉,而且讓對方也去掉這個勾勾。
3.在租賃伺服器時,一定要選擇獨享頻寬,記住,獨享的。據我的經驗,在IDC租伺服器時免費贈送的百兆共享頻寬還不如租個5M的獨享的效果好。
三.GG V3.7 原始碼下載
下載最新版本,請轉到這裡。
注意:如果要將GG部署到廣域網,則可以在服務端的配置檔案中設定監聽的埠;而在客戶端的配置檔案中,則可以指定伺服器的IP和Port。
關於GG的最新全貌介紹、以及如何部署、資料庫、試用帳號等問題,我單獨寫了一篇文章,作為彙總,可參見 可在廣域網部署執行的QQ高仿版 -- GG2013概要。
歡迎和我探討關於GG2013的一切,我的QQ:2027224508,多多交流!
大家有什麼問題和建議,可以留言,也可以傳送email到我郵箱:ggim2013@163.com。
如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵