在广域网中,由于网络的结构纷繁复杂、而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战。这次发布的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。

如果你觉得还不错,请粉我,顺便再顶一下啊,呵呵

可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天、控制更多相关细节的更多相关文章

  1. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.6,增加语音消息、语音留言等功能

    自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一 ...

  2. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.5,增加自拍头像功能、细节优化(源码)

    距离上次发版本(GG叽叽V3.4,增加系统设置.最近联系人.群功能)又有1个月了,在这个月内,由于空闲时间不是很多,所以,GG增加的主要功能只是拍照并设定其为自己头像.修改密码.删除好友.以及一些bu ...

  3. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)

    自从上次版本(GG叽叽V3.2,增加离线消息.离线文件功能)发布后,我个人觉得主要的大功能都实现得差不多了,接下来的几个版本将不断优化GG的细节,提高其可用性.这次版本更新的内容主要是为GG增加了系统 ...

  4. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)

    (几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱.有了一点甜头,目前和2.3个好朋友一起做 ...

  5. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)

    (前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉.)GG的前面几个版本开发了一些比较高级的功能,像视频聊天.远程桌面.文件传送.远程磁盘等, ...

  6. 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)

    QQ的远程协助.或者说桌面共享是一个非常实用的功能,所以,2.4版本的GG复制了它,而且,GG增强了桌面共享的功能,它可以允许指定要共享桌面的区域,这样,对方就只能看到指定区域的桌面,这对节省流量会非 ...

  7. 可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)

    前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应 ...

  8. 可在广域网部署运行的QQ高仿版 -- GG叽叽V1.8(源码)

    距离的GG 1.0发布已经三周了,这三周内,我利用业余时间为GG增加了视频聊天的功能.个人觉得进展有些缓慢,主要是因为大多数时间都花在了UI上.由于本人不会PS,所以图片素材都是从网上一个一个搜下来的 ...

  9. 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.0,增加网盘和远程磁盘功能(源码)

    尽力2~3周发布一个版本,我这次也没有失言.这段时间内,我仿照QQ的微云功能,在GG中增加了网盘的功能,而且,我还自创了一个QQ没有的新的功能:远程磁盘.正如远程桌面一样,远程磁盘允许我们像访问本地磁 ...

随机推荐

  1. 用grunt进行前端工程化之路

    我们的项目wecash4.0的前端构建考虑过用fis和grunt. 目录: 前期调研:fis vs grunt vs gulp? 一.安装grunt和项目. fis是百度fex研发的构建工具,非常方便 ...

  2. 近期微博吐槽言论存档,涉及“性能优化”、C++陋习等

    写C++程序的几个陋习:class 名以大写 C 开头,例如 CDate:成员变量以 m_ 开头:变量采用匈牙利命名法:不知道何时禁用 copy-ctor/assign operator.前三个可能是 ...

  3. ADV数字的剪切

    #include <iostream> using namespace std; #define SIZE 9 #define MAXLEN 6 int data[SIZE][MAXLEN ...

  4. AndroidLinker与SO加壳技术之下篇

    点此查看上篇<AndroidLinker与SO加壳技术之上篇> 2.4 链接 链接过程由 soinfo_link_image 函数完成,主要可以分为四个主要步骤: 1. 定位 dynami ...

  5. 大前端学习笔记整理【五】rem与px换算的计算方式

    前言 这段时间的小项目中算是真正意义上使用了rem来进行移动端的页面布局,项目结束了我反思了一下之前的对于rem的使用...原来我以前对rem用法完全是在搞笑啊!!结合这次这个小项目,我觉得我也有必要 ...

  6. html5新特性之拖放

    1.元素是否可拖动可放置 draggable="true" 设置元素可以拖动 ondragover="allowDrop(event)"  元素默认不能放置,加 ...

  7. redis hash数据类型

    我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Age等.如果H ...

  8. mysql下载安装

    1.下载 下载地址:http://dev.mysql.com/downloads/mysql/ 根据电脑配置来选,我选了 windows(x86,64-bit),ZIP Archive这个,点击Dow ...

  9. cocos2d 3.X Shader 变暗和变灰

    转自http://www.waitingfy.com/archives/1741 1.为了节约一张图引发的Shader使用  我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示 ...

  10. rails4.2~devise邮箱测试

    1.由于网站无需验证,只需一封欢迎邮件,在config/intiailzers/devise.rb里面配置 config.allow_unconfirmed_access_for = nil #2.d ...