参考文档:Kurento
安装Kurento服务器
本地安装
使用这种方法,您将从Kurento项目提供的本地Ubuntu软件包系统信息库中安装Kurento Media Server。KMS 对Ubuntu的两个长期支持(LTS)版本有明确的支持:Ubuntu 16.04(Xenial)和Ubuntu 18.04(Bionic)(仅64位)。
卸载旧版Kurento,可以发出以下命令:
sudo aptitude remove kurento-media-server
建议使用aptitude卸载软件包,因为它具有更好的删除算法,并且实际上确实删除了Kurento安装的所有依赖项。apt-get没有。
打开一个终端,然后按照下列步骤操作:
确保已安装GnuPG
sudo apt-get update && sudo apt-get install --no-install-recommends --yes \
gnupg
定义系统中安装了哪个版本的Ubuntu。
仅运行以下行之一:
DISTRO="xenial" # KMS for Ubuntu 16.04 (Xenial)
DISTRO="bionic" # KMS for Ubuntu 18.04 (Bionic)
将Kurento存储库添加到您的系统配置中。
在上一步中使用的同一终端中运行以下三个命令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
source /etc/upstream-release/lsb-release 2>/dev/null || source /etc/lsb-release
sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <# Kurento Media Server - Release packages
deb [arch=amd64] http://ubuntu.openvidu.io/6.13.0 $DISTRO kms6
EOF
安装KMS:
sudo apt-get update && sudo apt-get install --yes kurento-media-server
该服务器包含与Ubuntu初始化系统集成的服务文件,因此您可以使用以下命令来启动和停止它:
sudo service kurento-media-server start
sudo service kurento-media-server stop
查看kurento-media-server服务状态
sudo service kurento-media-server status
像这样就是跑起来了
kurento-media-server.service - LSB: Kurento Media Server daemon
Loaded: loaded (/etc/init.d/kurento-media-server; generated)
Active: active (running) since Wed 2020-04-29 12:25:08 CST; 5h 16min ago
Docs: man:systemd-sysv-generator(8)
Process: 27688 ExecStart=/etc/init.d/kurento-media-server start (code=exited,
Tasks: 39 (limit: 4419)
CGroup: /system.slice/kurento-media-server.service
└─27698 /usr/bin/kurento-media-server
4月 29 12:25:07 hrb systemd[1]: Starting LSB: Kurento Media Server daemon...
4月 29 12:25:07 hrb kurento-media-server[27688]: * Start Kurento Media Server
4月 29 12:25:07 hrb kurento-media-server[27688]: * Configure Kernel resource li
4月 29 12:25:08 hrb kurento-media-server[27688]: ...done.
4月 29 12:25:08 hrb systemd[1]: Started LSB: Kurento Media Server daemon.
检查安装
要验证Kurento进程是否已启动并正在运行,请使用以下命令并查找该kurento-media-server进程:
ps -fC kurento-media-server
输出:
UID PID PPID C STIME TTY TIME CMD
kurento 7688 1 0 13:36 ? 00:00:00 /usr/bin/kurento-media-server
使用此命令来验证此端口是否已打开并正在侦听传入的数据包:
sudo netstat -tupln | grep -e kurento -e 8888
输出:
tcp6 0 0 :::8888 :::* LISTEN 7688/kurento-media-
最后,检查Kurento的RPC WebSocket是否正常,并且能够接收和处理消息。为此,请发送一个虚拟请求并检查响应是否符合预期:
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
应该得到类似于以下内容的响应:
HTTP/1.1 500 Internal Server Error
Server: WebSocket++/0.7.0
忽略错误行:这是一个预期的错误,因为curl它不使用Kurento协议。我们只是检查了WebSocket++服务器是否真正启动,并正在监听连接。
我使用的是JavaScript端实现(缺啥装啥)
在系统中安装Node.js,Bower和Web服务器:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g bower
sudo npm install -g http-server
需要此演示的源代码。从GitHub克隆它,然后启动Web服务器:
官方文档 说明切换到6.13.0分支,我clone下来的并没有这个分支,所以我直接在master分支上操作的
也就是不需要git checkout 6.13.0
这句.
git clone https://github.com/Kurento/kurento-tutorial-js.git
cd kurento-tutorial-js/kurento-hello-world
git checkout 6.13.0
bower install
http-server -p 8443 --ssl --cert keys/server.crt --key keys/server.key
这时候用浏览器访问https://localhost:8443
,会发现控制台报错,wss无法连接,这是因为本地证书相关的问题.
ctrl+c关闭当前webserver
打开kurento-hello-world下的js下的index.js
修改这个地方:
{
default:
{
// Non-secure WebSocket (only for localhost tests)
//ws_uri: 'ws://' + location.hostname + ':8888/kurento',
// Secure WebSocket (for localhost and remote tests)
// To use this, you have to enable the "mediaServer.net.websocket.secure"
// KMS setting in "kurento.conf.json".
//
// Also, note that most browsers will reject self-signed certificates for
// Secure WebSockets connections. You have to either use a proper
// certificate, or install your self-signed Root CA in the browser. For this
// last option, we recommend using the tool "mkcert".
ws_uri: 'wss://' + location.hostname + ':8433/kurento',
ice_servers: undefined
}
});
将 //ws_uri: 'ws://' + location.hostname + ':8888/kurento',
的注释解开,将 ws_uri: 'wss://' + location.hostname + ':8433/kurento',
注释掉.
重新启动一下webserver
http-server -p 8443 --ssl --cert keys/server.crt --key keys/server.key