系统环境
一、编译服务器和加载模块
二、下载编译指定版本video_demo
三、配置verto.conf.xml
1.修改配置文件
2.重新启动
四、MCU通话测试
1.如何使用video_demo
2.测试结果
五、MCU的通话原理及音频/视频/布局/管理员等参数配置
附录
freeswitch微信交流群
系统环境
lsb_release -a
No LSB modules are available. Distributor ID: Ubuntu
Description: Ubuntu 22.10 Release: 22.10 Codename: kinetic
uname -a
Linux yqw-Lenovo-XiaoXinPro-13ARE-2020 6.2.0-37-generic
#38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
nvm --version
0.33.11
node -v
v10.16.3
npm -v
6.9.0
一、编译服务器和加载模块
首先需要运行FS,如何编译FS,并添加MCU模块,参考本专栏另一篇文章
:freeswitch编译mod_av支持webrtc MCU通话
//运行FS服务器
sudo ./freeswitch -nc -nonat //如果想看日志不加后面两个参数
//运行客户端
sudo ./fs_cli
//加载模块
load mod_av
load mod_verto
二、下载编译指定版本video_demo
video-demo和Verto Communicator两个demo https://github.com/freeswitch/verto-clien
这两个demo也有自己的官方https://evoluxbr.github.io/verto-docs/tut/initializing-verto.html
git clone https://github.com/freeswitch/verto-client
git reset --hard 6d19d90dfdbf29005c9356823250692283acda63 //指定提交的版本,master变化比较快
verto-client/video_demo/js
make
三、配置verto.conf.xml
1.修改配置文件
sudo vim /usr/local/freeswitch/conf/autoload_configs/verto.conf.xml,和之间为新增的虚拟http服务器,只需要改动,为你的video_demo地址即可。
<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="$${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="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="$${external_rtp_ip}"/>
<param name="local-network" value="localnet.auto"/>
<param name="outbound-codec-string" value="opus,h264,vp8"/>
<param name="inbound-codec-string" value="opus,h264,vp8"/>
<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"/>
<vhosts>
<vhost domain="localhost">
<param name="alias" value="seven.local freeswitch.org"/>
<param name="root" value="/home/yqw/temp/FS/verto-client/video_demo"/>
<!-- <param name="script_root" value="/usr/local/freeswitch/scripts"/> -->
<param name="index" value="index.html"/>
<!--
<param name="auth-realm" value="FreeSWITCH"/>
<param name="auth-user" value="freeswitch"/>
<param name="auth-pass" value="rocks"/>
-->
<rewrites>
<rule expression="^/api" value="/my_custom_api.lua"/>
<rule expression="^/channels" value="/rest.lua"/>
</rewrites>
</vhost>
</vhosts>
</profile>
可以看到默认监听的8082和8082端口,secure="true"说明是wss的,需要用websocket,如果改成false可能不太好用。https和wss都是加密,webrtc规定需要是安全性的媒体才能发送。
可以看到和之间添加了http的虚拟服务器,添加后,FS本身就变成了一个http服务器,那么它现在又支持websocket又支持http。
以上配置参考杜老师提交的FS官方WIKI
2.重新启动
完成后需要杀死原来的服务器和客户端,然后重新运行。或者服务器和客户端的都执行reloadxml,重新加载配置。
四、MCU通话测试
完成后,用chrome打开https://yourIP:8082,这里需要访问google的一些数据,所以网络要通www.google.com才行。
注意不能使用127.0.0.1或者localhost,用ifconfig查看自己的ip。
然后在同一个浏览器启动verto_communicator客户端,两者进行视频会议
1.如何使用video_demo
点击Call Extension
输入3500,只有35开头的才会拨入视频会议
2.测试结果
video_demo客户端
verto_communicator客户端五、MCU的通话原理及音频/视频/布局/管理员等参数配置
FS把画布横向和纵向都分为360份,既适合16:9也适合4:3,然后把本地和远端的视频流贴到一个画布上,本地和远端看到的视频一模一样。所以以上你看到的本地的流,并不是来自本地直接渲染,而是来自服务器的编码好的流。
关于如何设置画布布局,如何改变分辨率,帧率,声音,floor,布局,管理员等各种参数,以及如何设置这些默认值,参考本专栏另一篇文章:freeswitch webrtc MCU三个配置文件,及conference全命令解释
附录
verto_communicator 用安格瑞写的
video_demo 用jequre写的