利用Kurento实现一对一通信
前言
自己的计划是,毕业设计做一个类似于腾讯会议的视频流通信服务,发现想要实现起来并不容易,不过自己也还是慢慢的在摸索,最后找到了一个叫做Kurento的视频流服务器,打算使用这个服务器去开发程序。
配置与实现
想要配置这个东西可是非常非常的坑啊,本来自己是去官网找到了一些可以直接运行的例子,然后在本地直接start,完全没有问题,然后拿到虚拟机试一试:
当然,kurento肯定是利用docker安装的,这个dockerhub也有,这里先列出来:
1 | sudo docker run -d --name kms -p 8888:8888 kurento/kurento-media-server:xenial-latest |
发现仍然可以使用,最后拿去阿里云服务器试了试,结果就……,完全没有作用,安全组什么的都开了,我之后就觉得会不会是公网ip之类的问题,但是不知道怎么下手,之后再Stack Overflow中,看到了创建者的发言,在公网中必须有turn服务器,于是乎,我便开始了配置turn服务器之路。
由于在dockerhub没有turn服务器的镜像源,turn服务器安装这块坑就大了,网上有很多的教程,非常之乱,又要什么内网ip,什么什么md5验证,什么什么必须要在Ubuntu下运行,看的我真的是一脸懵逼,怎么可能这么复杂而且又有这么多说法呢??
我基本都试了一次,嗯,如同预期一般,非常的不靠谱。
但最后还是找到了解决方案,在github找到了可以直接使用的dockerfile:
1 | https://github.com/konoui/kurento-coturn-docker.git |
然后去运行它:
1 | cd /kurento-coturn-docker/coturn/ |
然后是网上博客都有讲到的有效性测试,这个大家自己看吧。
然后需要编辑Kurento:
1 | 进入镜像 |
配置打洞服务器,配置文件应该改成这样的:
1 | stunServerAddress=you_url |
一般情况下,坑到这里应该也就完了,但是你可以在试试,还是跑不通!!!!
这又是为什么呢????
最后我想了想,为什么本地配置就完全没问题呢?就算连接公网需要turn,但是代码层面却没有任何提示啊,这不应该,所以,接下来就是最坑的了,你甚至需要去打开源代码,修改并连接turn服务器!!!!
我敢说,绝大多数人都会和我一样,觉得这不应该,你特么本地的代码例子完全就是摆着看的嘛。
做法如下:
打开index.js
在函数function uiStart()里,增加一个叫iceservers的变量,格式如下:
1 | var iceservers={ |
再修改底下的options变量:
1 | const options = { |
暂时不写了。。。头痛