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. DVWA--SQL Injection

    sql注入是危害比较大的一种漏洞,登录数据库可以进行文件上传,敏感信息获取等等. Low 先来看一下源码 <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { ...

  2. CRM帮助B2B企业持续改善战略决策「下篇」

    尽管数据早已深入人心,但依然有相当比率的B2B企业在管理和战略决策时依赖直觉而不是客户数据.不停变化的B2B市场表明了以客户为中心的趋向和格局,CRM客户管理系统能够协助您更好的使用客户数据并最大限度 ...

  3. SSM框架整合(Spring+SpringMVC+Mybatis)

    第一步:创建maven项目并完善项目结构  第二步:相关配置 pom.xml 引入相关jar包 1 <properties> 2 <project.build.sourceEncod ...

  4. [bug] ERROR: Can't get master address from ZooKeeper; znode data == null

    排错 访问bigdata111:50070没显示 jps发现hdfs的namenode没启动 查看namenode日志发现9000端口被占用 查找占用端口的进程 杀死进程,或在配置文件中更改端口号 参 ...

  5. [DB] SQL 必知必会

    整体架构 数据类型 文本类:CHAR.VARCHAR(可变长度字符,多使用).TEXT.LONGTEXT(文本较大时使用) 数字类:TINYINT.INT.BIGINT.FLOAT.DOUBLE 日期 ...

  6. [Java] HOW2J(Java中级)

    异常 定义:导致程序正常流程被中断的事件 异常处理常见手段 try catch:将可能抛出异常的代码放在try的块中,一旦出现异常就跳转到catch的块中处理 throws/throw:不在本模块处理 ...

  7. TrueCrypt与CryptSetup双系统全盘加密(图文)

    http://blog.topsec.com.cn/truecrypt%E4%B8%8Ecryptsetup%E5%8F%8C%E7%B3%BB%E7%BB%9F%E5%85%A8%E7%9B%98% ...

  8. 使用chrony安装chrony

      yum install chrony -y   使用chrony安装chrony 使用root用户登录~]# yum install chrony 默认的chrony进程位置/usr/sbin/c ...

  9. nginx location标签的匹配规则

    location的匹配 匹配符 匹配规则 优先级 = 精确匹配 1 ^~ 以某个字符串开头 2 ~ 区分大小写的正则匹配 3 ~* 不区分大小写的正则匹配 4 !~ 区分大小写不匹配的正则 5 !~* ...

  10. liveCD版: CD光盘映像,和liveDVD一样,唯一的区别就是该版本中包含的软件包会少一点,安装系统时使用 U 盘或者CD光盘进行安装。

    https://man.linuxde.net/download/CentOS/ CentOS,英文全称"Community Enterprise Operating System" ...