HTML5方式使用freeswitch——VERTO模块

mod_verto
在freeswitch中有mod_sofia模块支持sip协议。sip协议用于媒体链接建立前的信令交互。像mod_sofia这种模块在freeswitch中成为endpoint,除了mod_sofia,freeswitch还有一个mod_verto模块。mod_verto使用freeswitch自定义的一个协议,通过websocket进行信令交互。verto协议基于jsonRpc协议,通过json格式来传输数据。

安装mod_verto

正常编译安装freeswitch时在module配置文件中打开verto的编译,之后一样make&make install就可以了,安装好之后需要在freeswitch启动加载模块的配置文件中打开verto,使freeswitch启动时自动加载mod_verto。

配置verto

修改conf/autoload_configs/verto.conf.xml

如下:

<configuration name="verto.conf" description="HTML5 Verto Endpoint">

  <settings>
    <param name="debug" value="10"/>
    <!-- seconds to wait before hanging up a disconnected channel -->
    <param name="detach-timeout-sec" value="120"/>
    <!-- enable broadcasting all FreeSWITCH events in Verto -->
    <!-- <param name="enable-fs-events" value="false"/> -->
    <!-- enable broadcasting FreeSWITCH presence events in Verto -->
    <param name="enable-presence" value="false"/>
  </settings>
  <profiles>
    <profile name="default-v4">
      <param name="bind-local" value="$${local_ip_v4}:8081"/>
      <param name="bind-local" value="$${local_ip_v4}:8082" secure="true"/>
      <param name="force-register-domain" value="$${domain}"/>
      <param name="secure-combined" value="/usr/local/freeswitch/certs/wss.pem"/> -证书的位置,一会儿存放证书时要用
      <param name="secure-chain" value="/usr/local/freeswitch/certs/wss.pem"/>
      <param name="userauth" value="true"/>
      <!-- setting this to true will allow anyone to register even with no account so use with care -->
      <param name="blind-reg" value="false"/>
      <param name="mcast-ip" value="224.1.1.1"/>
      <param name="mcast-port" value="1337"/>
      <param name="rtp-ip" value="$${local_ip_v4}"/>
      <!--  <param name="ext-rtp-ip" value=""/> -->
      <param name="local-network" value="localnet.auto"/>
      <param name="outbound-codec-string" value="opus,vp8,h264"/>
      <param name="inbound-codec-string" value="opus,vp8,h264"/>
      <param name="apply-candidate-acl" value="localnet.auto"/>
      <param name="apply-candidate-acl" value="wan_v4.auto"/>
      <param name="apply-candidate-acl" value="rfc1918.auto"/>
      <param name="apply-candidate-acl" value="any_v4.auto"/>
      <param name="timer-name" value="soft"/>
    </profile>
    <profile name="default-v6">
      <param name="bind-local" value="[$${local_ip_v6}]:8081"/>
      <param name="bind-local" value="[$${local_ip_v6}]:8082" secure="true"/>
      <param name="force-register-domain" value="$${domain}"/>
      <param name="secure-combined" value="$${certs_dir}/wss.pem"/>
      <param name="secure-chain" value="$${certs_dir}/wss.pem"/>
      <param name="userauth" value="true"/>
      <!-- setting this to true will allow anyone to register even with no account so use with care -->
      <param name="blind-reg" value="false"/>
      <param name="rtp-ip" value="$${local_ip_v6}"/>
      <!--  <param name="ext-rtp-ip" value=""/> -->
      <param name="outbound-codec-string" value="opus,vp8"/>
      <param name="inbound-codec-string" value="opus,vp8"/>
      <param name="apply-candidate-acl" value="wan_v6.auto"/>
      <param name="apply-candidate-acl" value="rfc1918.auto"/>
      <param name="apply-candidate-acl" value="any_v6.auto"/>
      <param name="apply-candidate-acl" value="wan_v4.auto"/>
      <param name="apply-candidate-acl" value="any_v4.auto"/>
      <param name="timer-name" value="soft"/>
    </profile>
  </profiles>
</configuration>
为用户号码配置verto支持

修改directory/default.xml,在<params>和</params>中添加如下:

  <param name="jsonrpc-allowed-methods" value="verto"/>
  <param name="jsonrpc-allowed-event-channels" value="demo,conference,presence"/>
每个用户的xml配置文件中 conf/directory/default/1000.xml,修改如下:

  <user id="1001">
    <params>
      <param name="password" value="$${default_password}"/>
      <param name="vm-password" value="1001"/>
      <param name="verto-context" value="public"/>
      <param name="verto-dialplan" value="XML"/>
    </params>
如需使用会议功能,请修改会议配置文件conf/autoload_configs/conference.conf.xml

在<profiles>和</profile>中检查conference-flags项目,确保其中包含livearray-sync和livearray-json-status

拨号计划配置例如:

<extension name="HTML5 Verto">
   <condition field="destination_number" expression="^(10[0-9][0-9])$">
      <action application="export" data="dialed_extension=$1"/>
      <action application="set" data="call_timeout=30"/>
      <action application="bridge" data="${verto_contact ${dialed_extension}@${dialed_domain}}"/>
   </condition>
</extension>
至此freeswitch针对verto的配置已经完成,想要测试的话,需要使用freeswitch自带的verto demo,安装使用过程如下:

一、创建证书

因为wss方式的访问是加密的,所以需要配置https方式运行demo,先创建一个自签名证书,以供freeswitch和web服务使用,注意二者需要使用同一套证书才能顺利的访问freeswitch。

创建自签名证书,过程中按提示输入各种信息,过程中需要openssl的支持,如果未安装请提前自行安装。
wget http://files.freeswitch.org/downloads/ssl.ca-0.1.tar.gz
tar zxfv ssl.ca-0.1.tar.gz
cd ssl.ca-0.1/
perl -i -pe 's/md5/sha256/g' *.sh
perl -i -pe 's/1024/4096/g' *.sh
./new-root-ca.sh
./new-server-cert.sh self.verto
./sign-server-cert.sh self.verto
cat self.verto.crt self.verto.key >
/usr/local/freeswitch/certs/wss.pem /*注意此路径和verto配置文件中的相同*/

二、安装web服务,以apache为例

sudo apt-get install apache2

配置apache
sudo a2enmod ssl
sudo a2enmod rewrite

修改/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:443> -- 修改为443
…………
--增加下面几行
SSLEngine On
SSLOptions +StrictRequire
SSLCertificateFile /usr/local/freeswitch/certs/wss.pem
SSLCertificateKeyFile /usr/local/freeswitch/certs/wss.pem
SSLCertificateChainFile /usr/local/freeswitch/certs/wss.pem
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet


重启apache服务
sudo service apache2 restart

三、将verto demo放到apache的web页面目录中

cp -rf /home/verto/freeswitch/html5/verto/video_demo  /var/www/html

此处我们直接复制带视频的demo过来,verto还提供了不带视频的demo和verto_communicator请自行尝试。

打开浏览器(我用的Chrome)访问https://IP地址/video_demo

提示未信任,点高级,继续前往。

至此安装完毕,其他请自行体验。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
FreeSWITCH中,Jitter Buffer(抖动缓冲区)用于处理网络传输中的抖动问题,以确保音频流的稳定传输和播放。以下是在FreeSWITCH使用Jitter Buffer的一般方式: 1. 确定Jitter Buffer的设置:您可以在FreeSWITCH的配置文件中找到与Jitter Buffer相关的设置。一般来说,您需要定义Jitter Buffer的大小(以毫秒为单位)和其他相关参数,例如最小延迟和最大延迟等。 2. 针对不同的呼叫路由或应用程序,配置Jitter Buffer:您可以通过在呼叫路由或应用程序的配置文件中设置相关参数来启用或禁用Jitter Buffer,并为每个呼叫路由或应用程序单独配置Jitter Buffer的大小和其他参数。 3. 监控Jitter Buffer的性能:FreeSWITCH提供了一些命令和工具来监视Jitter Buffer的性能和状态。您可以使用命令行工具如fs_cli或Web管理界面来查看Jitter Buffer相关的统计信息,例如延迟、丢包等。 4. 调整Jitter Buffer的参数:根据实际情况,您可能需要根据网络条件和呼叫质量调整Jitter Buffer的参数。通过逐步调整Jitter Buffer的大小和其他参数,您可以优化音频传输的质量和稳定性。 需要注意的是,Jitter Buffer只是解决音频抖动的一种技术手段,具体的配置和调整可能因应用场景和网络环境而有所不同。建议您参考FreeSWITCH的官方文档和社区资源,以获取更详细和准确的配置指南和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大头菜馅馒头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值