测试 FreeSWITCH 视频会议

2011-04-24 00:00 [freeswitch]


一直想测一直 FreeSWITCH 的视频会议功能,但以前只有两个支持 H263 的设备 (Huawei视频电话及一个 Xlite),未能好好体验。最近买了两个 XPT8886 视频电话及一个 Bria 软电话授权,总算是可以测试三方会议了。

首先,要在 sofia profile 中设置支持的视频编码,简单起见我直接在 vars.xml 中设置了:

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU,PCMA,GSM,H264,H263-1998,H263"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,GSM,H264,H263-1998,H263"/>

首先将所有视频设备设成只支持 H263,让我所有支持视频的设备连接互拨,测试均正常。然后将所有电话打入默认的电话会议号码 3000 ,电话会议正常。经过研究源代码,发现流程是这样的:

  • 每个会议里都有一个 video 线程

  • 每个会议里会有一个标志,叫做 floor,一般来说,当前正在发言的人会拥有这个 floor

  • 拥有 floor 的人的视频会广播到所有的终端上,包括它自己

如果在会议中,另一个人开始讲话,视频就会发生切换,但切换的画面会出现马赛克,而且有些慢,即使在局域网环境中也如此。

接下来测试 H264,由于我华为的设备不支持H264只好放到一边了。

全部打入 3000 以后发现 XPT8886 终端的视频不能正常显示,而 Bria 的则正常。百般测试无果只好查看源代码了,最后发现,在 mod_conference 的 1011 行左右,有一段检测 i-frame 的代码,对于 Bria 能检测通过,而 XPT8886 发出的 RTP 包无论如何都检测不通过,后来,直接将其改成 iframe = 1 ,视频功能正常。

} else if (vid_frame->codec->implementation->ianacode == 99) {	/* h.264 */
    iframe = (*((int16_t *) vid_frame->data) >> 5 == 0x11);

画质明显比 H263 好得多,切换也快得多。

在广域网的环境下测了一下,效果还不错。连接美国的 FreeSWITCH 服务器,发现视频质量很差,当然了,视频需要到美国绕一圈再回来,当然会大打折扣。准备哪天找个老外测一测,看看效果。

《大道至简》

七歌
微信公众号

七歌杜金房
微信视频号