首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mod_sonar

mod_sonar

作者头像
杜金房
发布于 2020-12-21 10:58:39
发布于 2020-12-21 10:58:39
1.3K0
举报

Sonar译为声纳,又译声呐,其英文全称为“Sound Navigation And Ranging”,是一种利用声波在水下的传播特性,通过电声转换和信息处理,完成水下探测和通讯任务的电子设备。它有主动式和被动式两种类型,属于声学定位的范畴。 声纳系统的音频从次声波到超音波都有。

mod_sonar 类似于一个真正的声纳。它的工作原理是这样的——首先你在远端启动一个服务器,能将收到的来话信息中的音频原样返回(可以使用FreeSWITCH中的echo App实现)。然后在本地的FreeSWITCH上产生一些铃音,发送到远端的服务器上再反射回来,然后使用VAD检测功能可以检测这些铃音,从而可以在某种程度上确定网络的质量。

加载该模块后,将会在日志中看到如下的消息:

[NOTICE] switch_loadable_module.c:269 Adding Application ‘sonar'

可见,该模块只实现了一个 sonar App。

为进行测试,我在一台远端的FreeSWITCH服务器上使用如下Dialplan做了一个Echo服务:

<extension name=“public_dialplan_echo">

<condition field="destination_number" expression="^(echo)$">

<action application="answer"/>

<action application="echo"/>

</condition>

</extension>

然后,在我的电脑上使用如下的命令进行测试(其中x.x.x.x为我的远端服务器的IP地址):

originate sofia/internal/echo@x.x.x.x:5080 &sonar

日志输出如下:

[DEBUG] switch_ivr_async.c:3087 TONE ping HIT 1/1

[DEBUG] switch_ivr_async.c:3093 TONE ping DETECTED

[NOTICE] mod_sonar.c:87 Sonar ping took 379 milliseconds

[NOTICE] mod_sonar.c:87 Sonar ping took 140 milliseconds

[NOTICE] mod_sonar.c:87 Sonar ping took 380 milliseconds

...

[INFO] mod_sonar.c:179 Sonar Ping (in ms): min:140 max:380 avg:303 sdev:103 mdev:83 sent:5 recv: 5 lost:0 lost/send:0.00%

从日志中可以看出,sonar这个App向远端发送了5次ping请求(实际上发送5次音频数据),然后收到(检测到)5次反射回来的音频,最小时长是140ms,最大是380ms,平均值是303ms,其它的值是均方差等。看起来还算不错。

当然,为了测试更准确一些,也可以给sonar一个参数,表示你想测试的次数,如,下列命令将测试10次:

originate sofia/internal/echo@x.x.x.x:5080 &sonar(10)

下面是我用操作系统的ping命令得到的结果,可以看出,操作系统的ping包平均只需要28ms就能走一个来回。

7 packets transmitted, 7 packets received, 0.0% packet loss

round-trip min/avg/max/stddev = 16.233/28.495/80.739/21.465 ms

----------------------------------------

FreeSWITCH-CN是什么?

----------------------------------------

FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的「FreeSWITCH中文社... 」,或在通迅录->订阅号中搜索「FreeSWITCH-CN」来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。

FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。

如果你在学习和使用FreeSWITCH的过程中,有什么有趣的故事,也欢迎与我分享。移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档