当前位置: 首页 > news >正文

freeswitch webrtc video_demo客户端进行MCU的视频会议

系统环境
一、编译服务器和加载模块
二、下载编译指定版本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写的

FS是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入FS微信群讨论。但记得备注:FS爱好者


http://www.lryc.cn/news/256870.html

相关文章:

  • 【鸿蒙学习网络】
  • MySQL系列(一):索引篇
  • Flink Flink数据写入Kafka
  • 《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 Affective Computing 2021
  • Pytorch CIFAR10图像分类 Swin Transformer篇
  • 【vim】常用操作
  • oracle、误操作删除数据库 数据恢复。
  • 【Angular开发】Angular在2023年之前不是很好
  • 记录 | 报错:libssl-dev : 依赖: libssl3 (= 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装
  • MySQL联合查询、最左匹配、范围查询导致失效
  • 部署zabbix
  • 服务器感染了.locked、.locked1勒索病毒,如何确保数据文件完整恢复?
  • 【Linux系统化学习】命令行参数 | 环境变量的再次理解
  • 【STM32】TIM定时器编码器
  • 力扣44题通配符匹配题解
  • windows系统安装RocketMQ_dashboard
  • ATECLOUD电源自动测试系统打破传统 助力新能源汽车电源测试
  • 如何教会小白使用淘宝API接口获取商品数据
  • Redis有序集合对象
  • 【C++数据结构 | 字符串速通】10分钟秒杀字符串相关操作 | 字符串的增删改查 | 字符串与数组相互转换
  • 运动重定向:C-3PO
  • 天池SQL训练营(四)-集合运算-表的加减法和join等
  • thinkphp lists todo
  • 【Flutter】创建应用顶级组件,应用根组件 (学习记录)
  • AI材料专题报告:AI革命催生新需求国产替代推动新方向
  • JVM 分析GC日志
  • 阿里云服务器环境配置,ssh免密登录和配置docker
  • 【LeetCode】2621. 睡眠函数
  • 网络入门---TCP通信实现
  • neuq-acm预备队训练week 8 P2661 [NOIP2015 提高组] 信息传递