在廣域網中,由於網絡的結構紛繁復雜、而且其實時狀況又是千變萬化的,所以,要使廣域網中的視頻聊天達到一個令人滿意的效果,存在諸多挑戰。這次發布的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。
如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵
