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.0

    2.安装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的视频通讯服务搭建的更多相关文章

  1. 在Ubuntu上部署一个基于webrtc的多人视频聊天服务

    最近研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了 ...

  2. 六、springboot 简单优雅是实现短信服务

    前言 上一篇讲了 springboot 集成邮件服务,接下来让我们一起学习下springboot项目中怎么使用短信服务吧. 项目中的短信服务基本上上都会用到,简单的注册验证码,消息通知等等都会用到.所 ...

  3. webrtc笔记(3): 多人视频通讯常用架构Mesh/MCU/SFU

    问题:为什么要搞这么多架构? webrtc虽然是一项主要使用p2p的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有了下图 ...

  4. 零配置Socket TCP消息通讯服务容器EC

    EC全称是elastic communication,是基于c#实现的Socket网络通讯服务容器,支持windows .Net和mono.通过EC容器可以让开发人员在不了解Socket网络通讯知识和 ...

  5. 一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本

    最近研究下java语言,根据一般使用的情况,写了个连接通讯服务的框架: 框架结构 C-Manager-S; 把所有通讯内容抽取成三个方法接口:GetData,SetData,带返还的Get; 所有数据 ...

  6. 开源jabber(XMPP)架设内部即时通讯服务的解决方案

    Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用.    XMPP(可扩展消息处理现场协议)是基于可扩展 ...

  7. live 555 freebsd 或centos 7.4 实现代理视频直播服务

    live 555   freebsd 或centos 7.4 实现代理视频直播服务 the live555 media server    在线直播服务器 关于此服务器 此服务是一个无安全的rtsp服 ...

  8. android 不同进程间的调用 AIDL 实现通讯服务

    android 不同进程间的调用  AIDL 实现通讯服务       近期对aidl android 不同进程间的调用,不同运用间的调用做了一些尝试: 过程例如以下: 1:首先在要被调用的程序里写好 ...

  9. Golang 在电商即时通讯服务建设中的实践

    马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech ​即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等 ...

随机推荐

  1. 驰骋CCFlow开源工作流程引擎如何设置PDF打印

    前言 经常有驰骋CCFlow爱好者朋友提问关于打印相关问题.在这篇博文中大家介绍一下工作流引擎CCFlow的HTML打印和PDF打印,针对Java版本和.NET版本有不同的操作步骤,包括开关设置.水印 ...

  2. Git安装教程最新版本(国内gitee国外github)

    Git安装教程最新版本(国内gitee国外github) 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 获取大师使用的typora主题: http://w ...

  3. [linux] Git基本概念&操作

    1.基本概念 版本控制系统:一种软体工程技巧,籍以在开发的过程中,确保由不同人所编写的同一项目代码都得到更新.并追踪.记录整个开发过程. 集中式(SVN)/ 分布式(GIT)版本控制系统:SVN的版本 ...

  4. [设计模式] 读懂UML图

    类之间关系(由强到弱) realize(继承):三角+实线(指向类),继承类(SUV是一种汽车) generalization(实现):三角+虚线(指向接口),实现接口(汽车是一种车) composi ...

  5. fail to start File System Check

    fail to start File System Check 方法A: 输入root的密码 cd /etc 1 vim /etc/fstab 将所有分区最后的数字 1和2 全都改为0 reboot ...

  6. 串口配合DMA接收不定长数据(空闲中断+DMA接收)-(转载)

    1.空闲中断和别的接收完成(一个字节)中断,发送完成(发送寄存器控)中断的一样是串口中断: 2.空闲中断是接收到一个数据以后,接收停顿超过一字节时间  认为桢收完,总线空闲中断是在检测到在接收数据后, ...

  7. shell基础之case应用

    在server0上穿件一个名为/root/script.sh的脚本,让其提供给下列的特性    1.当运行/root/script.sh all,输出为none 2.当运行/root/script.s ...

  8. 分布式锁中的王者方案-Redisson

    上篇讲解了如何用 Redis 实现分布式锁的五种方案,但我们还是有更优的王者方案,就是用 Redisson. 缓存系列文章: 缓存实战(一):20 图 |6 千字|缓存实战(上篇) 缓存实战(二):R ...

  9. [leetcode] 33. 搜索旋转排序数组(Java)

    33. 搜索旋转排序数组 说实话这题我连题都没有看懂....真是醉了 二分,没意思,直接交了- - https://www.jiuzhang.com/solutions/search-in-rotat ...

  10. 记录: 解决 pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)

    - Mac 不知道怎么操作的 rm 了 usr/local/ 里面的某些文件, 导致一直出现 pycurl: libcurl link-time ssl backend (openssl) is di ...