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