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的配置使用。

相关推荐
暗夜的彩虹18 小时前
webrtc源码编译【linux/安卓】
android·linux·webrtc
phygram1 天前
Singleton: WebRTC中ThreadManager中的单例模式
webrtc
phygram1 天前
WebRTC的三大线程
webrtc
phygram2 天前
WebRTC线程的启动与运行
webrtc
phygram2 天前
TLS: WebRTC中ThreadManager的线程局部存储
webrtc
phygram2 天前
WebRTC的线程事件处理
webrtc
phygram2 天前
WebRTC的线程切换
webrtc
LuiChun3 天前
WebRTC音视频通话系统需求(项目预算)
音视频·webrtc
LuiChun3 天前
WebRTC音视频通话系统需求说明书
音视频·webrtc
superconvert4 天前
怎么在 Linux 下运行 smart_rtmpd
websocket·ffmpeg·webrtc·hevc·aac·rtmp·h264·dash·rtsp·srt·opus·vlc·obs·flv·vmix