Kurento多对多webrtc会议搭建测试
环境ubuntu18.04
KMS版本6.13.0
多对多通信demo7.0.0
KMS运行起来后,通过运行它的一个个demo,来实现不同的功能,它的demo很多如下:
https://github.com/Kurento

里面有一对一,多对多,还有一些特效的demo。这里运行的是多对多通话的demo。
它的KMS可以通过apt方式安装,然后拉下来每个demo源码来跑,每个demo的介绍使用在官网都有文档,如下:

建议完全按照官网的步骤运行,下面的方法包括配置一些环境问题和测试。
deviser@deviser:~/temp/KMS/kurento/tutorials/java/group-call$ which java
/usr/bin/java
根据以上地址,配置java环境变量
vim ~/.bashrc
export JAVA_HOME=/usr
export PATH=$JAVA_HOME/bin:$PATH
更换阿里云后
sudo apt-get update
sudo apt-get upgrade
查看java环境的版本
javac --version
javac 11.0.19
java --version
openjdk 11.0.19 2023-04-18
OpenJDK Runtime Environment (build 11.0.19+7-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.19+7-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)
mvn -v
Apache Maven 3.5.2
Maven home: /usr/share/maven
Java version: 11.0.19, vendor: Ubuntu
Java home: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-213-generic", arch: "amd64", family: "unix"
没有需要安装
sudo apt install openjdk-11-jdk-headless
Kurento Media Server简称KMS
安装gnupg,它是管理密钥和认证的工具,用来为后面添加KMS的源管理认证
sudo apt-get update && sudo apt-get install --no-install-recommends --yes gnupg
根据需要添加变量,这里用的是18.04
DISTRO="xenial" # KMS for Ubuntu 16.04 (Xenial)
DISTRO="bionic" # KMS for Ubuntu 18.04 (Bionic) //由于使用的是Ubuntu18.04服务器,所以选择这个添加源
```cpp
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOF
# Kurento Media Server - Release packages
deb [arch=amd64] http://ubuntu.openvidu.io/6.13.0 $DISTRO kms6
EOF
安装
sudo apt-get update && sudo apt-get install --yes kurento-media-server
一些服务器命令,这里启动服务器
sudo service kurento-media-server start
sudo service kurento-media-server stop
sudo service kurento-media-server status
sudo service kurento-media-server restart //重启kms
ps -ef | grep kurento-media-server
cat /var/log/kurento-media-server/error.log //查看日志
配置coturn服务器,参考
给KMS配置coturn
cd /etc/kurento/modules/kurento/
vim WebRtcEndpoint.conf.ini
//找到下列语句先将这两句取消注释,把尖括号里的内容替换成具体的IP地址和端口号
stunServerAddress=127.0.0.1
stunServerPort=3478
//填上可用的TURN 服务器地址、端口、用户名和密码(另见ubuntu18.04下安装coturn穿透服务器)
turnURL=helloworld:helloworld@127.0.0.1:3478?transport=udp
//重新启动KMS服务
sudo service kurento-media-server restart
检查Kurento的RPC WebSocket是否正常,并且能够接收和处理消息。为此,发送一个虚拟请求并检查响应是否符合预期
curl -i -N \-H "Connection: Upgrade" \-H "Upgrade: websocket" \-H "Host: 127.0.0.1:8888" \-H "Origin: 127.0.0.1" \http://127.0.0.1:8888/kurento
返回如下
HTTP/1.1 426 Upgrade Required
Connection: close Server:
WebSocket++/0.7.0
git clone https://github.com/Kurento/kurento.git
cd kurento/tutorials/java/group-call/
git checkout 7.0.0//相当于KMS6配7的demo了,用官网的源拉不下来7的KMS,许是我环境的问题
sudo mvn -U clean spring-boot:run//这里用了sudo,不用发现报错
关闭防火墙,开通tcp和udp的8888端口,KMS默认监听8888端口。
用firefox或者chrome打开,以下网址,有安全提示忽略,选高级按钮,接受风险进入。
https://localhost:8443/
如下:
PC1:其中大的是远端PC2的视频,小的是本地

PC2:其中大的是远端PC1的视频,小的是本地

测试发现,进入房间后,如果点击“leave room",之后再进入刚刚的房间,那么看不到本地和远端的,必须重刷新页面,再进入才能恢复。
参考:
官方文档
阿里云服务器(Ubuntu18.04版本)中安装Kurento流媒体服务器
Kurento的维护人员基于Kurento开发了商业的方案,叫OpenVidu,它较Kurento更容易上手,部署,其功能包含视频电话,视频课堂,视频会议等。其demo可以在以下连接体验,在两个pc上打开浏览器即可测试。
OpenVidu_demo
但这个服务分为免费和付费的。如下:

以上测试只用两个浏览器,但我们用的server其实是官网的server。想要自己部署到本地可参考如下教程。包括流媒体服务器,信令服务器,客户端等。
OpenVidu

相关文章:
Kurento多对多webrtc会议搭建测试
环境ubuntu18.04 KMS版本6.13.0 多对多通信demo7.0.0 KMS运行起来后,通过运行它的一个个demo,来实现不同的功能,它的demo很多如下: https://github.com/Kurento 里面有一对一,多对多,还有一些特效的demo。…...
蓝桥杯 (饮料换购,C++)
思路: 1、先加上初始的饮料数n。 2、再加上n可以兑换的饮料数n/3,求多余的瓶盖n%3。循环直至瓶盖数无法兑换新的一瓶饮料。 #include<iostream> using namespace std; int main() {int n,a0,sum0;cin >> n;sum n;while (n){n n a;//加上上…...
《java核心卷Ⅰ》知识点总结(可作面试题)
🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?main方法被声明为private会怎样?🛫 强制and自动类型转换都…...
发成绩小程序,一键群发成绩给家长,省事
大家好!又到了学期末,是不是又开始为了学生的成绩而烦恼了?别担心,今天就给大家带来一款超级实用的成绩查询系统!从此告别繁琐的手动操作,一键群发成绩给家长,轻松又愉快! 成绩查询系…...
barzilar_borwein算法微调函数的优化收敛
import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.4.2加载barzilar_borwein算法 import optimtool.unconstrain as ou barzilar_borwein ou.gradient_descent.barzilar_borwein初始化输入数据 f ( x ) ∑ i 1 n / 2 c ( x 2 i −…...
SpringBoot篇---第一篇
系列文章目录 文章目录 系列文章目录一、为什么要用SpringBoot二、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?三、运行Spring Boot有哪几种方式?一、为什么要用SpringBoot Spring Boot 优点非常多,如: 一、独立运行 Spring Boot而且内嵌了各种servlet容器,…...
算法通关村第二关-白银挑战反转链表拓展问题
大家好我是苏麟 , 今天聊一聊链表反转拓展问题 . 反转链表拓展问题 1.指定区间反转 描述 : 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 题目…...
【rust/树莓派】使用rppalembedded-graphics控制st7789 LCD屏幕
说在前面 树莓派版本:4bLCD模块:ST7789V2 240*280 LCD树莓派系统:Linux raspberrypi 5.15.76-v8 #1597 SMP aarch64 GNU/Linuxrust版本:rustc 1.73.0 模块详情 某雪的1.69inch LCD模块,包含杜邦线 准备工作 树莓派…...
WebSocket—STOMP详解(官方原版)
WebSocket协议定义了两种类型的消息(文本和二进制),但其内容未作定义。该协议定义了一种机制,供客户端和服务器协商在WebSocket之上使用的子协议(即更高级别的消息传递协议),以定义各自可以发送…...
淘宝/天猫获取购买到的商品订单物流信息 API分享
开发背景: 淘宝是中国最大的电商平台之一,拥有海量的用户和卖家。为了方便卖家和买家之间的交易,淘宝提供了订单物流API的开发接口。通过这个接口,卖家可以快速获取到买家的订单信息以及物流状态,从而更好地管理自己的…...
PS软件 点击 “另存为 Web 所用格式” ,提示错误 无法完成操作 系统找不到指定路径
软件:Adobe Photoshop 问题: PS 点击 另存为 Web 所用格式 ,提示错误 无法完成操作 系统找不到指定路径 解决: 如果是Win10以上的系统,出现这种情况基本就是被系统自带的杀毒软件阻止了,可以看一下电脑右…...
解决“您点击的链接已过期”;The Link You Followed Has Expired的问题
今天WP碰到一个坑。无论发布文章还是更新插件、更换主题都是这么一种状态“您点击的链接已过期”;The Link You Followed Has Expired 百度出来的答案都是修改post_max_size 方法1. 通过functions.php文件修复 这种方法更容易,只需将以下代码添加到Wor…...
说说对ajax、axios、jsonp的理解
下面是对 AJAX、Axios 和 JSONP 的简要说明: 1:AJAX(Asynchronous JavaScript and XML): AJAX 是一种用于创建异步通信的技术,通过在后台与服务器进行数据交换,实现页面的局部更新,…...
黄金代理这么多,怎么选?
目前,现货黄金代理已成为了市场中成熟的模式,我们只要在搜索引擎上搜索如何在市场中开户,会搜到各种各样的黄金代理,其中更是不乏服务非常优秀的。部分投资者早就接受了黄金代理的存在,并且率先开始在黄金代理中进行开…...
一个工作三年的前端是如何做性能优化的
你是怎么做性能优化的?关于这一个问题,也是我们前端开发程序员经常会讨论到的问题,接下来这篇文章将总结一下前端方面的性能优化及方式。 为什么要做性能优化 性能优化是为了提高网页的加载速度和相应速度,给用户带来更好的体验…...
如何确定自己的armbian系统是不是ARM64架构
使用 arch 命令: arch 命令会返回当前系统的架构信息。 arch系统是ARM64架构,返回 aarch64。系统是ARM32架构,它会返回 armv7l 或类似的值。 使用 uname 命令: 确认系统架构的方法是使用 uname 命令 uname -a这会显示系统的详…...
leetcode_1155 掷骰子等于目标和的方法数
1. 题意 n个k面的骰子,投掷出骰子的点数之和为target的所有可能。 掷骰子等于目标和的方法数 2. 题解 动态规划,实际上相当于一个0-1背包。 令 d p [ i ] [ j ] dp[i][j] dp[i][j]为前 i i i个骰子和为j的方案数 则 d p [ i ] [ j ] ∑ t 1 k d p…...
2023年中国精准放疗未来展望分析:将朝着精准化、数字化和智能化发展[图]
肿瘤放射治疗是利用放射线治疗肿瘤的一种局部治疗方法。放射线包括放射性同位素产生的α、β、γ射线和各类x射线治疗机或加速器产生的x射线、电子线、质子束及其他粒子束等。放射治疗在肿瘤治疗中的作用和地位日益突出,已成为治疗恶性肿瘤的主要手段之一。 现代放…...
大数据之LibrA数据库常见术语(二)
Cgroups Control Groups,控制组(FusionInsight LibrA中也称之为优先级组)。SUSE Linux和RedHat内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。 CLI Command-line Interface,命令行界面。应用程序和用户交互…...
华为面试题
一、实习 1、健康险核心 batch 自动查询和一键重启 2、后端如何实现免密登录 Spring Boot与Spring Security: 如果你使用的是Spring框架,Spring Security可以为你提供大量的安全功能。创建一个基于Spring Boot的新项目,并添加Spring Securi…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
