springboot+kurento+coturn+contos的视频通讯服务搭建
springboot+kurento+coturn+contos的视频通讯服务搭建
服务器
CentOS Linux release 7.9.2009 (Core)
本案例成功于20210628
1.默认服务器已经有Docker,安装kurento
##下载kurento镜像
[root@wjsmc wjsmc]# docker pull kurento/kurento-media-server:latest
##将端口暴露在公网3000端口
[root@wjsmc wjsmc]# docker run -itd --name ksm -p 3000:8888 kurento/kurento-media-server /bin/bash
##测试
[root@wjsmc wjsmc]# curl \
> --include \
> --header "Connection: Upgrade" \
> --header "Upgrade: websocket" \
> --header "Host: 127.0.0.1:3000" \
> --header "Origin: 127.0.0.1" \
> http://127.0.0.1:3000/kurento
##成功则出现以下字段
HTTP/1.1 500 Internal Server Error
Server: WebSocket++/0.7.02.安装coturn
[root@wjsmc wjsmc]# yum install coturn
[root@wjsmc etc]# yum -y install openssl-devel libevent-devel libevent
[root@wjsmc etc]# openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
##信息随便写
[root@wjsmc coturn]# vim /etc/coturn/turnserver.conf
listening-port=3478
listening-ip=私网ip
external-ip=公网ip
realm=公网地址
user=用户名:密码
[root@wjsmc coturn]# turnserver -r 公网地址:3478 -a -o -c turnserver.conf
[root@wjsmc coturn]# ps -ef|grep turnserver
[root@wjsmc coturn]# kill -9 xxxx
3.验证turn
验证地址STUN or TURN URI,TURN username,TURN password分别填写
turn:你的公网地址:3478
turnserver.conf 设置的用户名
turnserver.conf 设置的密码
出现relay说明成功
4.设置kurento的coturn地址
[root@wjsmc coturn]# docker exec -it ksm bash
root@539bb198252c:/# apt-get update
root@539bb198252c:/# apt-get install vim
root@539bb198252c:/# vim /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
turnURL=用户名:密码@ip:3478?transport=udp
root@539bb198252c:/# exit
[root@wjsmc coturn]# docker restart ksm
3.下载官方实例,这里需要maven,未安装的需要的移步安装后回来继续。
[root@wjsmc coturn]# yum install git
[root@wjsmc kurento]# git clone https://github.com.cnpmjs.org/Kurento/kurento-tutorial-java.git
[root@wjsmc kurento]# cd kurento-tutorial-java/kurento-one2one-call
[root@wjsmc kurento-one2one-call]# vim ./src/main/resources/static/js/index.js
##将以下内容添加,修改进incomingCall(message),call(),两函数中
var iceservers = {
"iceServers": [
{
urls: ["turn:公网ip:3478"],
username: "xxxxx",
credential: "xxxx"
}
]
};
var options = {
localVideo : videoInput,
remoteVideo : videoOutput,
onicecandidate : onIceCandidate,
onerror : onError,
configuration: iceservers
}
##执行项目
[root@wjsmc kurento-one2one-call]# mvn -U clean spring-boot:run -Dspring-boot.run.jvmArguments="-Dkms.url=ws://公网ip:3000/kurento"
成功!!
踩了不少坑,连续研究了一晚上,第二天一早爬起来,终于完成。
springboot+kurento+coturn+contos的视频通讯服务搭建的更多相关文章
- 在Ubuntu上部署一个基于webrtc的多人视频聊天服务
最近研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了 ...
- 六、springboot 简单优雅是实现短信服务
前言 上一篇讲了 springboot 集成邮件服务,接下来让我们一起学习下springboot项目中怎么使用短信服务吧. 项目中的短信服务基本上上都会用到,简单的注册验证码,消息通知等等都会用到.所 ...
- webrtc笔记(3): 多人视频通讯常用架构Mesh/MCU/SFU
问题:为什么要搞这么多架构? webrtc虽然是一项主要使用p2p的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有了下图 ...
- 零配置Socket TCP消息通讯服务容器EC
EC全称是elastic communication,是基于c#实现的Socket网络通讯服务容器,支持windows .Net和mono.通过EC容器可以让开发人员在不了解Socket网络通讯知识和 ...
- 一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本
最近研究下java语言,根据一般使用的情况,写了个连接通讯服务的框架: 框架结构 C-Manager-S; 把所有通讯内容抽取成三个方法接口:GetData,SetData,带返还的Get; 所有数据 ...
- 开源jabber(XMPP)架设内部即时通讯服务的解决方案
Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用. XMPP(可扩展消息处理现场协议)是基于可扩展 ...
- live 555 freebsd 或centos 7.4 实现代理视频直播服务
live 555 freebsd 或centos 7.4 实现代理视频直播服务 the live555 media server 在线直播服务器 关于此服务器 此服务是一个无安全的rtsp服 ...
- android 不同进程间的调用 AIDL 实现通讯服务
android 不同进程间的调用 AIDL 实现通讯服务 近期对aidl android 不同进程间的调用,不同运用间的调用做了一些尝试: 过程例如以下: 1:首先在要被调用的程序里写好 ...
- Golang 在电商即时通讯服务建设中的实践
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等 ...
随机推荐
- CSS变量和浏览器前缀
一.CSS变量 CSS变量是CSS的新特性,大多数浏览器都实现了这个功能,使用CSS变量有利代码复用,而且当我们修改变量值时,所有引用该变量的属性都会发生改变. 定义变量后可以有两种使用方法,第一种时 ...
- Linux性能监控与分析之--- CPU
Linux性能监控与分析之--- CPU 望月成三人关注 2016.07.25 18:16:12字数 1,576阅读 2,837 CPU性能指标 用户进程使用CPU的比率 系统进程使用CPU的比率 W ...
- MyBatis 映射文件详解(六)
MyBatis 配置文件类型 MyBatis配置文件有两种类型,如下: 全局配置文件(如 mybatis-config.xml) Mapper XML 映射文件(如 UserMapper.xml) 上 ...
- linux进程间通信-(转自 临水)
一.进程间通信概述进程通信有如下一些目的:A.数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B.共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别 ...
- Qt 搜索框
一.前言 用户需要输入文本时,可使用QLineEdit控件进行编辑输入,缺点是样式相对单一. 在使用百度搜索输入框时,发觉比较人性化,故采用QLineEdt+QPushButton通过css样式实现自 ...
- 十二、.net core(.NET 6)添加通用的访问webapi的方法(包括HttpClient和HttpWebRequest)
开发通用的访问webapi方法. 在common工具文件夹下,新建一个类库项目:Wsk.Core.WebHelper,并引用Package包项目,然后新建一个类HttpClientHelper,用于使 ...
- VUE3后台管理系统【路由鉴权】
前言: 在"VUE3后台管理系统[模板构建]"文章中,详细的介绍了我使用vue3.0和vite2.0构建的后台管理系统,虽然只是简单的一个后台管理系统,其中涉及的技术基本都覆盖了, ...
- AI算子列表
AI算子列表 概述 目前只有部分算子可在一个库中同时运行在MLU220和MLU270平台.也就是用户使用 ./build_cnplugin.sh --mlu270 命令编译生成的 libcnplugi ...
- 华为4D成像雷达、智能驾驶平台MDC 810
华为4D成像雷达.智能驾驶平台MDC 810 2020年10月底,华为发布了HI品牌,在今年2021年上海国际车展前夕,华为以 "专新致智" 为主题,举办HI新品发布会,发布了包括 ...
- Harmony生命周期
Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...