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. 【Matlab】BASK的调试与解调仿真

    索引 一.BASK的调制 1.1 曼彻斯特码 1.2 增益控制 1.3 常量求和 1.4 与载波相乘 1.5 波形预览 1.6 参数设置(参考) 二.BASK的解调 2.1 滤波 2.2 信号比较 2 ...

  2. MindSpore模型验证

    技术背景 在前面一篇博客中,我们介绍了MindSpore在机器学习过程中保存和加载模型的方法.这种将模型存储为静态文件的做法,使得我们可以更灵活的使用训练出来的模型,比如用于各种数据集的验证,或者是迁 ...

  3. oracle 碎片管理和数据文件resize释放表空间和磁盘空间(以及sys.wri$_optstat_histgrm_history过大处理)

    随着互联网的快速发展,各行各业的数据量也是与日俱增,而数据库的数据量也是直线增长,但是,如果表DML太多,则可能会在高水位线以下出现太多空白. 因此,只能将数据文件缩小到高水位线,因为高水位线以下有一 ...

  4. Django(34)Django操作session(超详细)

    前言 session: session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个概念.一个服务器存储授权信息的解 ...

  5. [bug] Springboot JPA使用Sort排序时的问题

    参考 https://blog.csdn.net/qq_44039966/article/details/102713779

  6. openstack创建vlan网络并配置网络设备

    1.在管理员-->网络-->创建网络. 2.填写网络信息,这里要划分新的VLAN,注意在物理网络中填写的事VLAN,段ID指的是vlan的id 3.创建的网络. 4.创建子网,在里面修改子 ...

  7. 如何解决在WordPress安装Redis插件时需要输入FTP问题?

    用LAMP或者LNMP搭建Worepress的时候,安装主题或者插件时候,往往提示需要输入FTP服务端信息的问题,其实这是一个坑,可以完全避免的 我们只需在wp-config.php文件最后添加以下代 ...

  8. http协议工作原理及工作流程

    什么是url ? url = 协议 + 域名 + 资源路径 比如: https://www.baidu.com/index.html http : 超文本传输协议 https: 安全套接字协议 HTT ...

  9. Linux进阶之RAID磁盘阵列、系统启动及dd命令

    本节内容 1.      磁盘阵列 RAID0: 条带卷 2+ 100% 读写速度快,不容错 RAID1: 镜像卷 2   50% 读写速度慢,容错 RAID5: 奇偶校验条带卷 3 读写速度快,容错 ...

  10. strcpy和memcpy的区别-(转自stone Jin)

    strcpy和memcpy都是标准C库函数,它们有下面的特点.strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函 ...