Welcome to Kurento — Kurento 6.9.0 documentation 这是官方文档的地址,细读了官方文档我发现这个kurento只能安装在Ubuntu上,这真是扯淡,这还是我第一次看到这么“完美”只支持Ubuntu的软件,然后公司只分给一台centos的服务器给我。幸好有解决方案,直接装不行我不能装docker吗,docker总不会不支持吧。而且官方也有docker使用kurento的文档:Docker Hub, 执行以下命令安装并启动镜像:docker run -d --name kms -p 8888:8888 kurento/kurento-media-server:xenial-latest
然后使用sudo docker ps
查看镜像是否启动,执行这个命令如果看到类似下面的输出,那么就是启动成功:
7bbe2673abd8 kurento/kurento-media-server:xenial-latest "/entrypoint.sh" 5 days ago Up 3 seconds (health: starting) 0.0.0.0:8888->8888/tcp kms
嗯,反正我是没遇到不成功的,如果不成功说明你倒霉,自己想办法解决吧。假设上面都运行成功,那么kurento就是安装成功并且成功的在8888端口运行起来了。
docker安装stun和turn服务器(打洞服务器)
kurento安装起来算是简单的了,唯一的坑也被docker解决了,但是stun和turn服务器安装这块坑就大了,网上很多教程,但是你会发现他们说的都不一样,有说一定要Ubuntu的,有说这个参数放内网ip的,有说这个参数放外网IP的,有说这个无所谓的,有说要生成用户的,有说要md5码的。我操我给这帮各执其词的教程和博客折磨的心力憔悴,最后拼拼凑凑的在自己的Ubuntu成功的搭建起来了一个打洞服务器,但是我并不建议你用这种方法,因为花费的时间实在太长,可以用更方便的方法。@codenjin师兄到GitHub上找到一个老外的GitHub项目,有关coturn的项目,老外用将所有的操作都写进了dockerfile里面,自动打包好一个coturn的镜像,首先克隆这个项目:https://github.com/konoui/kurento-coturn-docker.git
(可以给个star,毕竟帮忙解决问题了),克隆好了执行以下操作:
cd /kurento-coturn-docker/coturn/
//使用dockerfile,记住加点
sudo docker build --tag coturn .
//后台运行coturn
sudo docker run -p 3478:3478 -p 3478:3478/udp coturn
嗯,这个dockerfile给你配置turn的用户名和密码都是kurento,你如果简单百度过几篇博客就应该知道我在说什么。你可以用这个网址去测试stun和turn的有效性:
测试stun有效性(出现两个地址加”done“才为有效):
正在上传…重新上传取消正在上传…重新上传取消
image
测试turn有效性(出现三个地址加"done"才为有效):
正在上传…重新上传取消正在上传…重新上传取消
image
打了红圈的说明这是成功的,只有成功才会显示“done”,不成功一般会说“auth failed”或者“not reachable?”不要在意那个问号,只要不是done说明你就是失败的。哦,如果只有一个地址也“done”的话,那也是不行的,不信你随便拿个ip地址试试。
kurento设置打洞服务器地址
这个比较简单,但是是必不可缺的一步,如果是使用docker的镜像的话,那么应该进入kurento的镜像编辑kurento的配置文件:
#进入镜像
docker exec -it kms /bin/bash
#安装vim
apt-get update
apt-get install vim
#进入配置文件夹
cd /etc/kurento/modules/kurento/
#编辑配置文件
vim WebRtcEndpoint.conf.ini
若要配置打洞服务器,配置文件应该改成这样的:
stunServerAddress=you_url
stunServerPort=you_port
turnURL=kurento:kurento@you_url?transport=tcp
跑通官网java kurento-hello-world demo
以上的坑和这个坑都不算啥,这个才是最大的坑,如果你使用kurento并且在远端部署了kurento和打洞服务器并且试图跑通kurento官网给的java kurento-hello-world demo(https://github.com/Kurento/kurento-tutorial-java.git里面那个kurento-hello-wrold), 那就惨了,你会发现部署在自己本地的kurento能够完美跑通,但是kurento一部署到远端就无法连通,你会感觉自己的打洞服务器没配好,然后反复的去配,反复的看网上的教程,但是偏偏网上的教程各执一词,你瞬间迷茫了。
我就是这样的,弄了两天后最后@帅气小伙师兄发现是官网给的demo完全没有使用到我们自己配的打洞服务器。。。所以这个demo肯定跑不通,因为它根本他喵的就没用到你配好的打洞服务器啊!它用的是远在墙外的谷歌的stun服务器啊!谷歌再强也穿不了中国的防火长墙啊。
在kurento-hello-wrold项目文件夹中,执行以下操作:
cd /src/main/resources/static/js/
vim index.js
在函数function uiStart()里,增加一个叫iceservers
的变量,格式如下:
var iceservers={
"iceServers":[
{
urls:"stun:139.198.123.138:3478"
},
{
urls:["turn:139.198.123.138:3478"]
username:"kurento",
credential: "kurento"
}
]
}
再修改底下的options变量:
const options = {
localVideo: uiLocalVideo,
remoteVideo: uiRemoteVideo,
mediaConstraints: { audio: true, video: true },
onicecandidate: (candidate) => sendMessage({
id: 'ADD_ICE_CANDIDATE',
candidate: candidate,
}),
configuration: iceservers //修改在这里,增加了一个configuration的key
};
```