WebRTC之Kurento开发实践(一)Kurento Server安装

先来两篇扫盲文章,大致有个了解:

基于Kurento搭建WebRTC服务器

实现 WebRTC 的几个想法

其他资料:

kurento和打洞的服务器的安装及部署

安装KMS (Kurento Media Server)

推荐使用Docker安装,如果没有安装Docker,这里有个安装教程:Centos安装Docker

打开Docker相关页面:Docker Hub,按照官方说明来

  1. 安装镜像:
1
$ docker run -d --name kms -p 8888:8888 kurento/kurento-media-server:latest

  1. 检查KMS是否已准备就绪并且正在侦听,请发出以下命令(您需要在系统上安装curl)
1
$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: 127.0.0.1:8888" -H "Origin: 127.0.0.1" http://127.0.0.1:8888/kurento

如果出现以下情况,说明启动成功,不要在意错误提示,这是一个预期的错误,因为curl命令不会说KMS理解的协议。我们只是在检查服务器是否启动并正在侦听连接。

  1. KMS 日志

服务器日志可通过Docker公开其容器的日志的常规方式获得。因此,假设您为容器kms命名(使用--name kms,如上例所示):

1
$ docker logs kms

您可能还想实时跟踪日志,可以使用-f--follow来实现:

1
$ docker logs -f kms
  1. 环境变量
  • 调试日志

KMS使用环境变量GST_DEBUG定义所有基础模块的调试级别。设置此变量可以更改KMS生成的日志的详细程度:

1
$ docker run -d --name kms -p 8888:8888 -e GST_DEBUG="Kurento*:5" kurento/kurento-media-server:latest

检查有关调试日志的文档部分,以获取有关此环境变量和其他环境变量的更多信息。

docker安装stun和turn服务器(打洞服务器)

  1. 安装git,做好基本配置
1
2
3
$ yum install git -y
$ git config --global user.name "xxx"
$ git config --global user.email "xxxx@xxxx.com"
  1. 拉取coturn一个安装工具仓库
1
2
3
$ git clone https://github.com/konoui/kurento-coturn-docker.git
$ cd /kurento-coturn-docker/coturn/
// 使用dockerfile,记住加点

使用Dockerfile安装镜像

1
2
3
$ sudo docker build --tag coturn .
// 后台运行coturn
$ sudo docker run -p 3478:3478 -p 3478:3478/udp coturn

出现错误:

原因可能是https://ubuntu.com/esm不能再使用,或者不能再免费使用,需要登录授权,我尝试了一下,可以打开Dockerfile暂时把curl/这一行去掉,先不安装这个工具。

安装成功之后需要测试一下,打开页面:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

这个dockerfile给你配置turn的用户名和密码都是kurento,在页面中对应的位置填入服务器信息,如图:

点击Add Server,调整一下参数,点击下面的Gather candidates按钮,如果出现如下图的结果,并且服务器有输出日志,说明,成功了。

浏览器输入:IP + PORT,测试一下,出现如下页面:

测试最好使用FireFox浏览器Chrome有时候会出现错误:The server stun:xxx.xxx.xxx.xxx:3478 returned an error with code=701: STUN server address is incompatible.

测试搭建是否成功

使用官方helloworld Node.js版本测试:

1
2
3
4
5
6
7
8
9
10
11
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g bower
git clone https://github.com/Kurento/kurento-tutorial-node.git
cd kurento-tutorial-node/kurento-hello-world
git checkout 6.12.0
npm install
cd static
bower install --allow-root
cd ../
npm start

其中需要注意的是:nodejs不要安装过低的版本,推荐适应nvm切换最新稳定版。如果使用的root用户,bower install后面要跟参数--allow-root。不推荐使用cnpm,会出现莫名奇妙的错误。

运行可能会出现如下错误:

TypeError: Cannot read property 'unmask' of undefined at Receiver.unmask

这是package.json中的ws的版本过低"ws": "~1.0.1"

或者出现TypeError: Cannot read property 'session' of undefined

这是package.json中的ws的版本过高"ws": "^7.1.0"

这两种错误都需要手动把package.json中的ws版本改成"ws": "~2.0.2"

这时候,再次运行,打开页面,会发现,还是不成功。

进入kurento-media-server dockerdocker exec -it kms /bin/bash,进入/var/log/kurento-media-server/,查看日志文件,发现最后一行有一个错误:

简单使用

官方Node.js Client文档

推荐文章