当前位置: 首页 > 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爱好者


相关文章:

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

系统环境 一、编译服务器和加载模块 二、下载编译指定版本video_demo 三、配置verto.conf.xml 1.修改配置文件 2.重新启动 四、MCU通话测试 1.如何使用video_demo 2.测试结果 五、MCU的通话原理及音频/视频/布局/管理员等参数配置 附录 freeswitch微信交流群 系统环境 lsb_rel…...

【鸿蒙学习网络】

鸿蒙技术学习相关学习资料 官方文档&#xff1a;华为官方提供了鸿蒙开发者文档&#xff0c;包括开发指南、API参考和示例代码等。您可以访问华为开发者中心网站&#xff08;https://developer.harmonyos.com/&#xff09;获取最新的官方文档和教程。在 线 课 程 &#xff1a; …...

MySQL系列(一):索引篇

为什么是B树&#xff1f; 我们推导下&#xff0c;首先看下用哈希表做索引&#xff0c;是否可以满足需求。如果我们用哈希建了索引&#xff0c;那么对于如下这种SQL&#xff0c;通过哈希&#xff0c;可以快速检索出数据&#xff1a; select * from t_user_info where id1;但是这…...

Flink Flink数据写入Kafka

一、环境准备 官网地址 flink官方集成了通用的 Kafka 连接器&#xff0c;使用时需要根据生产环境的版本引入相应的依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><flink.version>1.14.6</flink.version&g…...

《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 Affective Computing 2021

《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 前言简介模型结构实验结果总结前言 今天为大家带来的是《Emotion-Regularized Conditional Variational Autoencoder for Emotional Response Generation》 出版:IEEE Transactions on Affective Computing 时间…...

Pytorch CIFAR10图像分类 Swin Transformer篇

Pytorch CIFAR10图像分类 Swin Transformer篇 文章目录 Pytorch CIFAR10图像分类 Swin Transformer篇4. 定义网络&#xff08;Swin Transformer&#xff09;Swin Transformer整体架构Patch MergingW-MSASW-MSARelative position biasSwin Transformer 网络结构Patch EmbeddingP…...

【vim】常用操作

用的时候看看&#xff0c;记太多也没用&#xff0c;下面都是最常用的&#xff0c;更多去查文档vim指令集。 以下均为正常模式下面操作&#xff0c;正在编辑的&#xff0c;先etc一下. 1/拷贝当前行 yy&#xff0c;5yy为拷贝包含当前行往下五行 2/p将拷贝的东西粘贴到当前行下…...

oracle、误操作删除数据库 数据恢复。

–查询 执行 delete 的语句 &#xff0c;拿到删除的时间 FIRST_LOAD_TIME &#xff0c;删除行数可参考 ROWS_PROCESSED select t.FIRST_LOAD_TIME,t.ROWS_PROCESSED,t.* from v$sql t where t.sql_text like %delete from trade% ;select *from trade as of timestamp to_time…...

【Angular开发】Angular在2023年之前不是很好

做一个简单介绍&#xff0c;年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【架构师酒馆】…...

记录 | 报错:libssl-dev : 依赖: libssl3 (= 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装

ubuntu 上安装 libssl-dev 失败的报错解决 报错&#xff1a; 下列软件包有未满足的依赖关系&#xff1a; libssl-dev : 依赖: libssl3 ( 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装 E: 无法修正错误&#xff0c;因为您要求某些软件包保持现状&#xff0c;就是它们破…...

MySQL联合查询、最左匹配、范围查询导致失效

服务器版本 客户端&#xff1a;navicat premium16.0.11 联合索引 假设有如下表 联合索引就是同时把多列设成索引&#xff0c;如(empno&#xff0c;ename)在查询的时候就会先按照empno进行查询&#xff0c;再按照ename进行查询其中empno是全局有序&#xff0c;ename是局部有…...

部署zabbix

源码下载地址&#xff1a; Download Zabbix sources nginx: download 防火墙和selinux都需要关闭 1、部署监控服务器 1&#xff09;安装LNMP环境 Zabbix监控管理控制台需要通过Web页面展示出来&#xff0c;并且还需要使用MySQL来存储数据&#xff0c;因此需要先为Zabbix准备基础…...

服务器感染了.locked、.locked1勒索病毒,如何确保数据文件完整恢复?

尊敬的读者&#xff1a; locked、.locked1勒索病毒的威胁如影随形&#xff0c;深刻影响着数字世界的安全。本文将深入揭示locked、.locked1的狡猾特征&#xff0c;为您提供实用的数据恢复方法&#xff0c;并分享一系列特别定制的预防措施&#xff0c;旨在使您的数字生活摆脱勒…...

【Linux系统化学习】命令行参数 | 环境变量的再次理解

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 代码仓库&#xff1a;Gitee 目录 mian函数传参获取环境变量 手动添加环境变量 导出环境变量 environ获取环境变量 本地变量和环境变量的区别 Linux的命令分类 常规命令 内建命令 …...

【STM32】TIM定时器编码器

1 编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的位置、旋转方向和旋转速度 接收正交信号&#…...

力扣44题通配符匹配题解

44. 通配符匹配 - 力扣&#xff08;LeetCode&#xff09; 给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。* 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 …...

windows系统安装RocketMQ_dashboard

1.下载源码 按照官网说明下载源码 官网 官网文档 2.源码安装 2.1.① 编译rocketmq-dashboard 注释掉报错的maven插件frontend-maven-plugin、maven-antrun-plugin mvn clean package -Dmaven.test.skiptrue2.2.② 运行rocketmq-dashboard java -jar target/rocketmq-…...

ATECLOUD电源自动测试系统打破传统 助力新能源汽车电源测试

随着新能源汽车市场的逐步扩大&#xff0c;技术不断完善提升&#xff0c;新能源汽车测试变得越来越复杂&#xff0c;测试要求也越来越严格。作为新能源汽车的关键部件之一&#xff0c;电源为各个器件和整个电路提供稳定的电源&#xff0c;满足需求&#xff0c;确保新能源汽车的…...

如何教会小白使用淘宝API接口获取商品数据

随着互联网的普及&#xff0c;越来越多的人开始接触网络购物&#xff0c;而淘宝作为中国最大的电商平台之一&#xff0c;成为了众多消费者首选的购物平台。然而&#xff0c;对于一些小白用户来说&#xff0c;如何通过淘宝API接口获取商品数据可能是一个难题。本文将详细介绍如何…...

Redis有序集合对象

一.编码 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的有序集合对象使用压缩列表作为底层实现&#xff0c;每一个集合元素使用紧挨在一起的两个压缩列表节点来保存。第一个节点保存元素的成员(member)&#xff0c;而第二个元素则保存元素的分值(score)。 127.0.0.…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...