我的系统是Ubuntu16.04。
我先安装了下面两个依赖。
sudo apt‐get install libssl‐dev
sudo apt‐get install libevent‐dev
然后我正常的安装。
git clone https://github.com/coturn/coturn
cd coturn
./configure
make
sudo make install
结果发现,执行./configure 还是正常的生成Makefile,但是当我在make的时候,报错了,大概意思是说动态库没有找到。
那只好往对应的目录中手动放动态库呗,将openssl的so,顺便静态库也放进去,例如放上去上面我的截图的/usr/local/lib目录中,但是又报了另一个错误,也是openssl库没找到的意思,去coturn的官网看issue也没有找到对应的解决方法。
弄着弄着一晚上三个多小时没了。。。实在没思路了,洗澡睡了。
然后第二天起来再百度百度看看,结果也遇到一个和我一样的问题。
大概意思就是可能与coturn的版本相关,我看他是使用camke加上自定义模块去找到对应的动态库,并且我这里执行./configure 也found对应的so,我也不知道为啥没链进去,所以就换了个下载方法。不用git clone去下载,使用wget去下载tar算了。
# 1. 提前安装相关依赖
sudo apt‐get install libssl‐dev
sudo apt‐get install libevent‐dev
sudo apt-get install sqlite3
sudo apt-get install build-essential//和gcc,g++相关的软件包
sudo apt-get install gcc//实际上安装上面的包后已经自动安装了gcc,g++,可能与ubuntu版本有关吧,我的是16.04
sudo apt-get install g++
# 2. 安装coturn
wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
tar -zxvf 4.5.1.1.tar.gz
cd coturn-4.5.1.1
./configure
make
sudo make install
如果gcc、g++没有安装或者版本较低,可能会出现以下错误:
如果成功了,可以通过which turnserver验证。如果出现路径即为成功。
which turnserver
或者使用下面的方法验证:
# nohup是重定向命令,输出都将附加到当前目录新生成的 nohup.out 文件中
# 命令后加 & ,后台执行起来后按 ctr+c,不会停止
# 注意:-u后面的是你的linux 账号和密码,例如你是root登陆的话,就是:root:你的root密码
sudo nohup turnserver ‐L 0.0.0.0 ‐a ‐u tanyiyuan:123456 ‐v ‐f ‐r nort.gov &
sudo lsof -i:3478
停止coturn服务可以使用kill -9。例如我上面lsof后看到pid。
sudo kill -9 5125
#此时再次查看程序已经停止了。
lsof -i:3478
参考文章:
CentOS上webRTC的coturn服务器部署。
如果不验证的话,那么有可能会存在这一种情况,就是你本地部署好coturn服务器并且测试是成功的,但是一拿到公网后,就失灵了,原因在于,即使coturn在局域网内是失效的,你在局域网也是能进行正常的音视频传输,因为局域网是互通的,所以你在局域网能测试成功,并不能代表coturn服务器就是正常工作的。所以验证还是必要的。
首先打开以下网址。
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
按如下步骤输入内容,其中1是你刚刚下载的coturn服务器的虚拟机ip或者云服务器ip,coturn的默认端口是3478。
第2、3步则是你虚拟机的用户和密码,就是上面登陆coturn服务器时,-u选项的账号、密码。
然后依次点击4和5即可。
成功的话,会出现done,说明你的coturn的stun打洞功能是正常工作的。
在确认是上面是能打洞之后,还需要验证turn的中继转发功能。
首先将stun的服务器去掉先,先点击一下那一行,然后按remove即可。
然后按照上面类似的做法,只不过需要将协议换成turn和ICE options换成delay。
如下图:
上面虽然看到,stun和turn都返回了Done,但是为什么他报了701返回。我百度了一下,有人说是谷歌浏览器的问题。
但我验证了一下,应该和浏览器没关,因为我用谷歌,微软自带的Microsoft Edge,搜狗,ie,火狐都不行,火狐测stun的时候没报错,但是测turn的时候报错了。 ie更离谱,点击添加服务器没反应。
并且有人和我的操作一样,使用搜狗浏览器是能正常的,没有报错701。
故留下此疑问。
然后又跟踪了一下这个疑问,有人说是正常的,具体看下面文章。
coturn NAT穿透服务器搭建。
How to create and configure your own STUN/TURN server with coturn in Ubuntu 18.04。
https://github.com/webrtc/samples/issues/1227。这一篇似乎很多国外的开发者遇到了和我类似的问题,并且谷歌官方也没有回应这个错误,那我们就不理他这个bug先了,避免浪费太多时间。