janus以及coturncentos8的配置_排错填坑完结篇

2023-11-16

前言

查阅了不少资料,网上对janus以及coturn的配置比比皆是, 不过, 我发现了一个问题, 那就是,

janus要直接对接coturn作为turn服务器吗?为什么?

janus的demo例子[譬如:video room]能不能在手机4g网络上面与pc端联通,看到双方的视频信息, 为什么?

 

网上的资料绝大部分都没有说明或者解决上面的问题, 导致的一个结果是, 根据网上的配置,顶多只能在本机, 或者同一个局域网里面使用,

并没有穿透nat的能力, 也达不到实际生产使用的起码标准.

 

ps:你可以看看之前配置的草稿,里面应该是遇到了很多人都会遇到的问题:

 

https://www.52play.net/blog/post?id=114

 

 

不过, 无论如何,下面给出这段时间不停试错参考过的资料:

janus官网:

https://github.com/meetecho/janus-gateway

 

其他:

阿里云实现Docker完整部署Janus-Gateway

 

Janus Webrtc服务的搭建

 

Janus在Ubantu下的安装与Https配置

 

janus前端demo网页部署说明:

Deploying Janus

 

其他:

coturn(turn)服务器搭建注意事项

云服务器搭建coturn不能正常使用的问题

 

https://blog.csdn.net/s569646547/article/details/50780682

 

https://blog.csdn.net/danfengw/article/details/68485223

 

 

701 error #1232

 

stun/turn服务器部署

 

 

always allocation timeout when connect to turn ( webrtc ) #397

 

 

https://blog.csdn.net/qq_29123057/article/details/91454733

 

https://stackoverflow.com/questions/36627529/coturn-turnserver-error-437-mismatched-allocation-wrong-transaction-id-webr

 

https://www.cnblogs.com/mobilecard/p/6542294.html

 

error 437: Mismatched allocation: wrong transaction ID #267

 

https://github.com/coturn/coturn/issues/459

 

https://blog.csdn.net/m0_37263637/article/details/102496005

 

https://blog.csdn.net/u012231640/article/details/83618274

 

配置

 

这篇文章不会讲述如何编译janus的,因为这部分内容也是相当有难度.假定已经对照官方文档编译通过了,且下面这些依赖都一一编译安装了:

 

域名配置https

具体请参考:

http://www.52play.net/blog/post?id=99

 

 

配置coturn

首先,coturn会安装一个
/usr/local/etc/turnserver.conf.default
的配置文件,那么就复制一份.
cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf
然后编辑:
vim /usr/local/etc/turnserver.conf

下面是修改内容:

#LocalIP,内网ip
listening-ip=172.26.26.78
listening-port=3478
tls-listening-port=5349
#LocalIP,内网ip
relay-ip=192.168.1.100
#NetIP
## 官方配置文档有填写例子,例如:external-ip=60.70.80.91/172.17.19.101
external-ip=服务器公开ip[publicIP]/内网IP
#relay-threads=50 注释掉,
### 启用长时间验证机制.
lt-cred-mech
cert=/etc/ssl/cert/domain/cert.pem
pkey=/etc/ssl/cert/domain/privkey.pem
#配置一个用户名密码
user=user:password123       
min-port=3480
max-port=3500
#--ps:下面有一个cli-password如果不设置什么的话会报cli-password错误无法启动之类的问题,那么就用默认的密码了.
cli-password=qwerty
#所用的域名
realm=domain.com

开放端口:

在阿里云上面开放相关端口,对了, 如果启用了防火墙firewall,那么也要设置开放端口:

firewall-cmd --add-port=3478/tcp --permanent   
firewall-cmd --add-port=3478/udp --permanent   
firewall-cmd --add-port=5349/tcp --permanent   
firewall-cmd --add-port=5349/udp --permanent 
firewall-cmd --add-port=3480-3530/udp --permanent
firewall-cmd --reload

 

添加启动以及关闭turnserver的脚本:

start.sh

#!/bin/sh
touch log.log
nohup /usr/local/bin/turnserver -c /etc/turnserver.conf  >> log.log 2>&1 &
echo "如果没有错误,那就是成功启动了";
ps -ef|grep /usr/local/bin/turnserver
#tail -f log.log

stop.sh

#!/bin/sh
ps -ef|grep /usr/local/bin/turnserver |grep -v grep|awk '{printf $2}'|xargs kill -9
ps -ef|grep /usr/local/bin/turnserver
DATE=`date +%Y-%m-%d-%H-%M` #获取当前系统时间
mkdir logs
mv log.log logs/${DATE}_log.log

 

文件夹结构:

 

 

 

如果要查看日志,可以在当前文件夹下面执行:

tail -f log.log

 

 

 

配置janus

编辑配置文件:
vim /opt/janus/etc/janus/janus.jcfg

 

找到certificates配置项,在里面打开以下内容的配置,并设置。

certificates:
        cert_pem = "/etc/ssl/cert/domain/cert.pem"
        cert_key = "/etc/ssl/cert/domain/key.pem"

 

nat配置说明:

stun服务器配置:

        stun_server = "stun.domain.net"
        stun_port = 3478
        nice_debug = false
        ###要配置nat_1_1_mapping,且为当前服务器的公共ip地址.
        nat_1_1_mapping = "publicIP"

有很多参考资料有配置nat下面的turn_server,例如:

nat:
        turn_server = "domain.com"
        turn_port = 3478
        turn_type = "udp"
        turn_user = "user"
        turn_pwd = "passwd123"
        ice_enforce_list = "eth0"

 

不过我告诉你,不要乱设置了

原作者在issue里面有说明的:

 

这段话的意思是:

只有在janus服务器在内网里面没有公共ip[即外面没办法直接访问到的情况下]才需要设置turn server进行nat打洞,

这种情况下, turn server必须要配置在一台有独立ip的外网服务器上面,不能跟janus放在一起[turn server都没办法直接访问到,怎么打洞了..]

,如果janus可以直接访问的话,就不需要配置在janus.jcfg上面配置turn server了---janus不需要turn server给自己转发数据的...

 

 

 

所以, 在拥有独立ip的主机上面部署janus就不要在janus.jcfg上面配置turn server节点了.设置了的话注释掉然后重启janus服务.

 

 

 

再打开janus.transport.http.jcfg进行配置。

vim /opt/janus/etc/janus/janus.transport.http.jcfg

 

分别找到general、admin、certificates三项的配置处,修改以下配置(没有提到的不用动)。

general:                                     
        https = true 
                                    
admin:
        admin_https = true 
certificates:
        cert_pem = "/etc/ssl/cert/domain/cert.pem"
        cert_key = "/etc/ssl/cert/domain/key.pem"

 

再打开janus.transport.websockets.jcfg进行配置。

vim /opt/janus/etc/janus/janus.transport.websockets.jcfg

 

分别找到general、admin、certificates三项的配置处,修改以下配置(没有提到的不用动)。

general:
        wss = true 
admin:
        admin_wss = true
certificates:
        cert_pem = "/etc/ssl/cert/domain/cert.pem"
        cert_key = "/etc/ssl/cert/domain/key.pem"

 

开放端口:

##ps:在spi plugin的配置文件里面,rtp 传输数据时候需要用到20000-40000[默认]这个区间的端口, 需要在阿里云以及防火墙上面都放开.
firewall-cmd --add-port=20000-40000/udp --permanent 
firewall-cmd --reload

 

 

启动以及关停脚本:

下面给出脚本方便启动服务以及关停服务:

 

start.sh

#!/bin/sh
touch log.log
nohup /opt/janus/bin/janus -C /opt/janus/etc/janus/janus.jcfg -d 5 -6 >> log.log 2>&1 &
echo "如果没有错误,那就是成功启动了";
ps -ef|grep /opt/janus/bin/janus
#tail -f log.log

 

stop.sh

#!/bin/sh
ps -ef|grep /opt/janus/bin/janus |grep -v grep|awk '{printf $2}'|xargs kill -9
ps -ef|grep /opt/janus/bin/janus
DATE=`date +%Y-%m-%d-%H-%M` #获取当前系统时间
mkdir logs
mv log.log logs/${DATE}_log.log

 

 

补充:

sip plugin默认配置rtp rtcp传输端口:

 

 

nginx配置

 

janus原本有 https://xxx:8089/janus之类的接口的,但是假定你已经用了https证书,那么要访问端口就显得很不方便了,

这一部分就来解决部署janus的前端网站[demo页面]的问题.

 

你可以直接官网的说明的:

Deploying Janus

 

还有, 官网的demo例子没有额外配置ice server---没有配置turn server的, 所以我们也需要在官网demo例子的js脚本里面修改以下内容:

 

iceServers:[xxxxxx] 就是我们等下需要配置的内容

ps:

先说明一下, 在不同网络,譬如,手机4g网络以及pc网站要互通,访问video room测试页面要能够看到双方的视频就必须要指定iceServers, 这也是绝大部分文章没有提及的点:

应该是很多人都没有部署到实际生产环境的打算.

 

 

nginx.conf的配置:

charset utf-8;
###1/注意要将root改成已经修改的页面存放目录
set $meet_res_path /home/hansonBoy/meet_webstatic/;
root $meet_res_path;
index index.php index.html index.htm;
access_log /var/log/nginx/access.log main;
###2/要注意特别映射janus.js因为这个与下面的/janus前面部分是一致的,如果不特别指出来nginx直接转发到8088去了.
location /janus.js {
  alias $meet_res_path/janus.js;
}

###3/将janus转发到8088中.
location /janus {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8088/janus;
}

 

 

修改janus的demo页面

 

第一步, 将官方的demo程序下载下来----因为接下来我们需要改访问8089的前端逻辑啦,如下图所示:

 

ps:注意,官方demo用前端框架以及组件都是引用自cdn的--但我嫌cdn有时候很慢而且不知道什么时候会挂,所以cdn的东西也下载到本地了,前面几个文件夹就是装的这些,但是一般情况没必要这样做的, 麻烦得很.

 

下面修改8089逻辑:

搜索关键字可以得到:

 

 

官方demo中有这么多地方都要修改,

 

统一修改为:

 

第二,添加iceServer,

查找替换:

server: server,

替换为:

server: server,iceServers: [{urls: "turn:domain.com.cn:3478改成你自己的域名或ip", username: "user改成你自己的账号", credential: "123456改成你自己的密码"}],

 

第三上传到nginx指定的目录,比如,我在nginx指定代理的目录为:

/home/hansonBoy/meet_webstatic/

 

然后访问查看结果吧.

 

访问效果

电脑端:

 

手机端[移动4g网络,没有连接wifi]

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

janus以及coturncentos8的配置_排错填坑完结篇 的相关文章

  • coturn服务配置

    COTURN服务配置 准备工作 一台带有公网ip的服务器 xff08 coturn服务部署在具有公网ip的服务器上 xff09 下载coturn wget https span class token operator span span
  • webRTC中的coturn服务安装

    目录 1 先准备一台云主机 2 安装coturn的依赖 2 1 依赖软件准备 2 1 安装依赖组件 2 2 安装coturn的持久化保存用户信息库 3 安装coturn 4 coturn配置 4 1 创建用户 4 2 配置说明 4 3 收集
  • turnserver (coturn + redis) 配置ICE server 临时用户密码【实践】

    背景 前端连接turn服务时一般都需要设置账号密码 xff0c 由于都是在js中配置的 xff0c 长期凭据相对临时用户安全性会差很多 xff0c 本文通过程序生成临时的账号密码 xff0c 把临时凭据设置到Redis中 xff0c tur
  • 流媒体-Ubuntu 下 Janus Server 搭建笔记

    1 简介 Janus 是一个开源的 xff0c 通过 C 语言实现了对 WebRTC 支持的 Gateway xff1b Janus 自身实现得很简单 xff0c 提供插件机制来支持不同的业务逻辑 xff0c 配合官方自带插件就可以用来实现
  • Ubuntu16.04 中 搭建Janus Server

    Ubuntu16 04 局域网中搭建Janus Server janus简介 Janus是WebRTC 服务器端的开源项目 xff0c 官方对其定义是一个WebRTC服务器端 xff0c 支持的功能比较丰富 xff0c 通过core模块来支
  • 华为SMC2.0视频会议系统总结(一)

    简单总结下 新上手的华为视频会议SMC2 0会控系统 第一次接触华为的会控系统 理解的不是很深刻 简单的记下来 省得以后忘记 因为客户使用的泛微OA系统 我们公司 南大智慧 负责提供华为设备 并做相应的接口开发工作 我们主要的工作内容就是确
  • 国家开源软件资源库

    http yp oss org cn software show cat php cat id 5 基本信息 成熟度 Dimdim 2009 05 19 1 2 3 4 5 6 7
  • HUAWEI视讯技术学习笔记

    一 平台介绍 业务管理 SMC2 0 网络控制 网络控制的核心 SC switch center 是视讯业务的交换控制中心 主要有地址解析 接入控制 带宽管理 呼叫管理等功能 SC的交换控制是基于视讯的两大通信协议H 323和SIP而言的
  • YUV420P与YUVJ420P

    1 YUV420P与YUVJ420P AV PIX FMT YUV420P lt planar YUV 4 2 0 12bpp 1 Cr Cb sample per 2x2 Y samples AV PIX FMT YUVJ420P lt
  • FFMPEG对于rtp的推流以及VLC验证

    前言 参考资料 https blog csdn net zhoubotong2012 article details 86711097 https blog csdn net zhoubotong2012 article details 8
  • 视频会议直播和存储

    DVR的配置文件说明 dvr RTMP stream to file start to record to file when encoder publish reap flv according by specified dvr plan
  • janus以及coturncentos8的配置_排错填坑完结篇

    前言 查阅了不少资料 网上对janus以及coturn的配置比比皆是 不过 我发现了一个问题 那就是 janus要直接对接coturn作为turn服务器吗 为什么 janus的demo例子 譬如 video room 能不能在手机4g网络上
  • H.264概述

    我的百科 我的贡献 草稿箱 百度首页 登录 新闻 网页 贴吧 知道 MP3 图片 视频 百科 帮助设置 添加到搜藏 返回百度百科首页 编辑词条 H 264
  • Gstreamer的编译以及配置要点[初次总结]

    前言 Gstreamer是一个与ffmpeg齐名的音视频处理库 不过国内一般用的是ffmpeg 其实 gstreamer也蛮好用的 这篇文章主要说明一下如何编译gstreamer以及安装配置插件 起码不会报 插件not found的错误吧
  • SFU.、Janus、mediasoup 或 medooze 的作用是什么。在 webRTC 应用程序上

    我正在使用一个webRTC应用程序与简单对等npm 包 我想知道所有这些主题的目的是什么 SFU Janus mediasoup 或 medooze 如何集成它们来提高我的应用程序性能 PS 我正在使用node js在我的架构上为对等点之间
  • 防火墙应允许哪些端口使用 TURN 服务器?

    我想在我们公司的服务器上设置一个turn服务器 coturn 而且我不确定外部访问应该允许哪些端口 8443是必须的 使用WebRTC 3478 是凭证使用的必备条件 但是 TURN 服务器使用的端口有无数个 是否需要在防火墙中允许它们 或
  • 原生IOS设置远程视频描述发送参数失败

    这是 sdpOffer offer v 0 o 1514366952141741 1 输入 IP4hostx s 安装点 99 t 0 0 a 组 捆绑视频 a msid 语义 WMS janus m 视频 9 UDP TLS RTP SA
  • coturn STUN 请求在本地工作,但不适用于远程连接

    我已成功向 coturn 服务器发出 TURN 请求 https github com coturn coturn https github com coturn coturn 但在执行 STUN 请求时失败 如果我尝试从运行服务器的同一台
  • iOS 和 Safari 11 WebRTC 不收集 STUN/TURN Trickle ICE 候选者

    在 iOS 11 iPhone 5s 和 iPhone 7 或桌面上使用 Safari 11 时 我的 Web 应用程序无法通过 CoTURN 服务器收集 WebRTC 中继 ICE 候选项 Web 应用程序 建立单向音频 WebRTC 对
  • iceConnectionState 已断开连接(通过互联网使用时)

    这个问题以前曾被问过 但我还没有找到答案 我基本上遇到了与描述相同的问题here https stackoverflow com questions 34405816 peerjs webrtc iceconnectionstate fai

随机推荐

  • 数据仓库主题三-(实施篇)

    背景 如何从具体的需求或项目转换为可实施的解决方案 如何进行需求分析 架构设计 详细模型设计等 则是模型实施过程中讨论的内容 业界常用两种数据仓库建设模型思想分为两种kimball和inmon模型 具体的kimball和inmon 模型思想
  • 逻辑设计基础_第1章_初识数字逻辑

    这一个月打算学习数字逻辑设计 刚听完课 现在做一下笔记 第1章 初始数字逻辑 本节知识总结为三个方面 分别是数字逻辑的知识脉络 数字逻辑设计的用途和三种二进制编码 下面分别说明 1 1 数字逻辑的知识脉络 首先 学习逻辑代数 其次 根据逻辑
  • docker容器拷贝

    背景 当前jenkins服务器部署在内网环境 需要迁移到云服务器 版本和配置以及之前安装过的jenkins插件都需要同步迁移 方案1 使用docker commit将当前容器打包成镜像 docker commit contain id co
  • CSR867x — 蓝牙音频发射器方案(支持USB、模拟和SPDIF)

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 或进群 471144274 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就
  • 傅里叶变换公式整理

    1 一维傅里叶变换 1 1 一维连续傅里叶变换 正变换 F
  • RS485(Modbus RTU)协议

    Modbus是啥 Modbus 是一种串行通信协议 是施耐德电气为使用可编程逻辑控制器 PLC 通信而发布 是工业领域通信协议的业界标准 并且是工业电子设备之间常用的连接方式 读完好像还是不知道是啥 没关系 你只要记住一点 Modbus是与
  • LeetCode初级算法-,买卖股票数组算法

    题目 给定一个数组 prices 其中 prices i 是一支给定股票第 i 天的价格 设计一个算法来计算你所能获取的最大利润 你可以尽可能地完成更多的交易 多次买卖一支股票 JAVA class Solution public int
  • DNS的解析流程,DNS主从配置,使用httpd服务演示安全上下文值的设定(selinux),使用web服务端口的改变来演示端口的设定(selinux)

    DNS的解析流程 一 DNS的解析方式 1 正向解析 正向解析文件中存储的记录称为A记录 A记录记录着域名和IP的映射关系 2 反向解析 反向解析文件中存储的记录称为PTR指针 PTR记录着IP和域名的映射关系 二 DNS域名的分层结构 国
  • OpenCV 二维码定位与识别

    因为二维码本身含有信息 因此可以作为产品的信息载体 如 产品特征 在工业领域常用在产品入库 分拣和包装上 但常常会因为二维码图像污点 光照不均匀以及二维码图像倾斜等原因 使得二维码的识别正确率低 针对这些问题 通过学习贾老师OpenCV课程
  • 数据库查询,返回前5、10行数据

    1 SQLServer sqlserver 支持top关键字 返回前若干条数据 select top 5 from table 返回前5行数据 2 MySQL mysql 支持 limit 只能适用于mysql limit 子句用于强制 s
  • 数据分析学习

    前言 数据分析已经是我们工作离不开的一个东西 其本质上还是基于数据算法对于数据的多维度计算 数据分析概念 数据分析方法
  • Android--- UI组件AdapterView and 适配器Adapter

    Android AdapterView and Adapter 适配器 Adapter UI控件 AdapterView ListView 简单的ListView实现 图文ListView实现 ListView的监听函数 GridView
  • socket的fd是什么?fd是啥的缩写?

    socket的fd是什么 fd是啥的缩写 fd 是 file descriptor 这种一般是BSD Socket的用法 用在Unix Linux系统上 在Unix Linux系统下 一个socket句柄 可以看做是一个文件 在socket
  • 7-7

    思路 在整个二维数组上下各加上一行0 然后从左到右 一列一列进行判断 判断的是数字改变次数 这里一列一列的找是因为可以把1 6 8分解成一片一片的元素 而且1 lt 8 lt 6 不知道能看懂不 代码里去掉 输入例子 可以得到 0 0 0
  • C#Tcp服务端主动断开,客户端无法感知问题

    服务端使用tcplistener接收连接请求 客户端使用tcpclient connect主动连接 在一对一的情况下 1个服务端只连接1个客户端时 服务端调用client Close 主动关闭连接后 客户端接收函数 revString br
  • Helm & Kubernetes Offline Deploy Rancher v2.7.5 Demo (helm 离线部署 rancher 实践)

    文章目录 1 简介 2 预备条件 3 选择 SSL 配置 4 离线安装的 Helm Chart 选项 5 下载介质 6 生成证书 7 镜像入库 8 安装 rancher 9 配置 nodeport 10 配置 ingress 11 界面访问
  • [1168]OSS ossutil64安装及使用

    文章目录 下载和安装 Linux系统安装 Windows系统安装 使用 oss下载到指定文件夹 从指定文件夹上传到oss相应的bucket下 设置ossutil的语言 clearOssData sh 下载和安装 下载地址 https hel
  • 一道有趣的面试:Trie 树及其改进

    0x00 导言 Trie 树是一种常见的数据结构 用以解决在给定单词在字典中是否存在的问题 而且支持动态的增删词典内容 常见的实现结构如下 struct node bool is word struct node 26 对于任意词典 查找给
  • 木马制作——图片木马制作

    木马制作 图片木马制作 一 简单说明 图片木马指的是图片格式的文件木马 图片格式包括jpg png等 原理是将木马程序和图片捆绑在一起 达到伪装的目的 程序可以是脚本语言或者编译语言 在web渗透中 通常将脚本编写的webshell和图片合
  • janus以及coturncentos8的配置_排错填坑完结篇

    前言 查阅了不少资料 网上对janus以及coturn的配置比比皆是 不过 我发现了一个问题 那就是 janus要直接对接coturn作为turn服务器吗 为什么 janus的demo例子 譬如 video room 能不能在手机4g网络上