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的有效性:

Trickle ICE

测试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
 };
​```



 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐