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)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等 ...
随机推荐
- 从0开始fastjson漏洞分析2
从0开始fastjson漏洞分析https://www.cnblogs.com/piaomiaohongchen/p/14777856.html 有了前文铺垫,可以说对fastjson内部机制和fas ...
- 拦截器(Interceptor)与过滤器(Filter)
目录 用户的普通Http请求执行顺序 过滤器.拦截器添加后的执行顺序 拦截器(Interceptor)的基本定义 拦截器(Interceptor)必须实现的三个方法 单个拦截器(Interceptor ...
- Python设计模式知多少
设计模式 设计模式是前辈们经过相当长的一段时间的试验和错误总结出来的最佳实践.我找到的资料列举了以下这些设计模式:工厂模式.抽象工厂模式.单例模式.建造者模式.原型模式.适配器模式.桥接模式.过滤器模 ...
- 如何利用CRM系统打通营销全渠道?
企业经常通过不同渠道组织各种形式的营销推广,可惜,这些营销推广的效果往往差强人意. 相关研究表明,很多营销推广不理想的主要原因是不同营销渠道之间没有打通数据,不清楚每个营销渠道或营销策划的投入产出.推 ...
- 用JIRA管理你的项目——(二)JIRA语言包支持及插件支持
昨天兴奋地把JIRA环境搭好,瞅了一眼管理界面--全英文,真是汗! 尚且不说全中文版管理界面让人操作起来多少会有困难,更别说是全英文! 昨天赞叹JIRA语言包支持丰富,今天终于找到了号称100%的语言 ...
- 解析CentOS 8上的Xrdp服务器安装
解析CentOS 8上的Xrdp服务器安装 Linux系统技术交流QQ群(915246)验证问题答案:刘遄 导读 Xrdp 是 Microsoft 远程桌面协议 (RDP) 的开源实现,允许您以图 ...
- vim使用基础
vi/vim编辑器使用 前言 There is an old joke about a visitor to New York City asking a passerby for direction ...
- :整数 跳转到该行 Vim中常用的命令
:set nu 显示行号 :set nonu 不显示行号 :命令 执行该命令 :整数 跳转到该行 :s/one/two 将当前光标所在行的第一个one替换成two :s/one/two/g 将当前光标 ...
- 利用stat指令查看文件创建时间
-shroot@test-W330-C30:/# stat * 文件:'b' 大小:4096 块:8 IO 块:4096 目录设备:802h/2050d Inode:5636097 硬链接:2权限:( ...
- 035.Python正则表达式
正则表达式 一 介绍 拼正则表达式是什么? 它是约束字符串匹配某种形式的规则 正则表达式有什么用? 检测某个字符串是否符合规则比如:判断手机号,身份证号是否合法 提取网页字符串中想要的数据.比如:爬虫 ...