WebRTC搭建与应用(五)-Coturn踩坑记

WebRTC搭建与应用(五)-Coturn踩坑记

近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC等有了初步了解,在此记录一下,以防遗忘。

第五章 WebRTC搭建与应用(五)-Coturn踩坑记

文章目录

前言

本来应该继续写PeerJS-Server使用的相关内容,但是在跨电脑测试WebRTC的过程中发现ICE服务一直有些问题,所以在此记录一下踩坑过程,希望对大家有所帮助。

# 一、Coturn使用

1.1 问题

之前按照https://blog.csdn.net/meteor1028/article/details/144290591讲解内容在Ubuntu搭建了Coturn包管理器服务形式,测试TURN服务是否连通是发现在火狐浏览器可以正确连接。

但是在谷歌浏览器却会出现卡死无法完成并返回relay信息的问题

1.2 问题排查与解决

开始在网上查找问题原因时,发现有些博主说通过Chrome浏览器自身有问题,无法通过Turn服务功能测试,我在服务器输出Coturn服务日志时谷歌浏览器连接有如下报错内容,我发现user中并没有出现我设置的用户名,所以会有401未授权的报错。

但是同样的服务通过火狐浏览器测试时,user中就是有用户名的,开始我也怀疑是谷歌浏览器自身的原因,但是因为轻量化渲染我们主要使用谷歌浏览器,所以还是想尝试查找一下问题原因,我就开始研究Coturn服务的相关参数。

经过排查发现在启动Coturn服务时,如果不调用-r命令参数即realm设置,谷歌浏览器就无法正确穿透返回。

所以启动Coturn服务时一定切记要加上-r设置才可以。

turnserver -r ip:3478 -c /usr/local/coturn/etc/turnserver.conf

加上-r设置后重启服务在谷歌浏览器测试发现可以完成同时有了relay信息的返回。

二、使用Docker部署Coturn

2.1 安装Docker

sudo apt-get update

sudo apt-get install docker.io

检查docker是否安装成功

docker -v

2.2 安装Coturn镜像

首先设置docker的国内镜像源,否则通过docker官网地址拉取Coturn镜像会报错超时。

sudo vim /etc/docker/daemon.json 初次安装docker没有daemon.json文件,需要创建,然后将下面的内容复制到文件中并保存。

{

"registry-mirrors": [

"https://docker.registry.cyou",

"https://docker-cf.registry.cyou",

"https://dockercf.jsdelivr.fyi",

"https://docker.jsdelivr.fyi",

"https://dockertest.jsdelivr.fyi",

"https://mirror.aliyuncs.com",

"https://dockerproxy.com",

"https://mirror.baidubce.com",

"https://docker.m.daocloud.io",

"https://docker.nju.edu.cn",

"https://docker.mirrors.sjtug.sjtu.edu.cn",

"https://docker.mirrors.ustc.edu.cn",

"https://mirror.iscas.ac.cn",

"https://docker.rainbond.cc"]

}

接着通过sudo service docker restart重启docker

然后通过sudo docker info查看镜像是否设置成功

国内镜像设置成功后,就可以拉取Coturn的镜像了,Coturn更新频率比较稳定,喜欢最新功能的可以拉取latest最新版本,我目前使用的是Coturn 4.6.2-r12,所以拉取命令如下:

sudo docker pull coturn/coturn:4.6.2-r12

拉取成功后,通过sudo docker images查看现有镜像信息。

2.3 配置Docker中的Coturn

参考第一章内容创建一个turnserver.conf文件,将coturn需要的配置信息写好,我没有创建dockerfile,所以直接通过命令创建容器运行Coturn即可,命令如下:

sudo docker run -d --name coturn --network=host -v /home/ubuntu/coturn-config/turnserver.conf:/etc/coturn/turnserver.conf coturn/coturn:4.6.2-r12 turnserver -r ip:3478

切记命令行中要加上-r设置,否则谷歌浏览器无法正常使用turn服务。

运行后通过sudo docker ps可以查看运行状态。

通过docker正确运行coturn以后,在网页上就可以测试ICE服务是否连通了。

总结

至此总结了一下部署、使用Coturn过程中遇到的问题以及相关流程,希望对感兴趣的小伙伴有帮助,如果有问题欢迎大佬们批评指正,下一章我们言归正传,测试PeerJS-Server服务的使用以及跨电脑同网络下PeerJS对ICE的配置使用。

相关推荐
大胡子大叔6 小时前
webrtc-streamer视频流播放(rstp协议h264笔记)
笔记·webrtc·rtsp·webrtc-streamer
_可乐无糖13 小时前
AWS WebRTC: 判断viewer端拉流是否稳定的算法
linux·服务器·webrtc·aws
却道天凉_好个秋13 小时前
WebRTC(十三):信令服务器
webrtc
却道天凉_好个秋10 天前
WebRTC(七):媒体能力协商
webrtc
GetcharZp14 天前
告别“只闻其名”!一文带你深入浅出 WebRTC,并用 Go 搭建你的第一个实时应用
后端·webrtc
平行云14 天前
3分钟搭建LarkXR实时云渲染PaaS平台,实现各类3D/XR应用的一键推流
云原生·webrtc·xr·云渲染·虚幻引擎·实时云渲染·像素流送
却道天凉_好个秋15 天前
WebRTC(六):ICE协议
服务器·网络·webrtc
从后端到QT16 天前
WebRtc ICE 模块分析
webrtc
平行云20 天前
LarkXR 赋能AI x XR数字供应链:引领智能设计、数字孪生与零售新未来
人工智能·webrtc·xr·云渲染·虚幻引擎·云展厅
CatalyzeSec20 天前
【插件推荐】WebRTC Protect — 防止 IP 泄漏
网络·webrtc