2011年11月17日星期四

bigbluebutton中的audio

官网的FAQ中提到,0,71a里面的默认的VOIP语音有2-4秒的时延,原因有两点,一个是服务器audio转码(nellymoser -> mulaw),另一个原因是TCP链路。但在网络状况比较好的情况下,还有问题,那应该是转码带来的开销太大。大致的流程是:
flash(nellymose) -> Red5phone(mulaw)->asterisk/freeswitch -> Red5phone(mulaw)->flash(nellymose)。

里面提到了几个方案:
1. 用speex代替nellymoser,因为asterisk和freeswitch都支持speex,所以不需要转码。另外可以看到bbb的开发人员也在尝试为freeswitch添加nellymoser的支持(http://lists.freeswitch.org/pipermail/freeswitch-dev/2011-March/004742.html),另外freeswitch也在添加对rtmp协议的支持,http://freeswitch-users.2379917.n2.nabble.com/Conference-and-Speex-Wideband-audio-quality-problem-td5356620.html,如果flash能够直接连上freeswitch,那么开销会进一步降低。asterisk似乎也添加了对rtmp的支持,但好像还有些问题https://issues.asterisk.org/view.php?id=15484。另外最新版本的asterisk和freeswitch都已经支持speex.

2. 用native code来替代java做转码。

3. 使用java的客户端直接连到freeswitch或者asterisk。

4. 使用push-to-talk的模式(http://zhidao.baidu.com/question/100105828),感觉和微信差不多。

5. 通过电话call-in。

最终在0.8版本中采用的方案是1,具体见http://groups.google.com/group/bigbluebutton-dev/browse_thread/thread/a36d61df9b9fc45b?pli=1,根据大家的反馈来看效果还不错。

没有评论:

发表评论