admin管理员组

文章数量:1666072

一、Kurento介绍


Kurento的主要组件是Kurento媒体服务器(KMS),负责媒体传输,处理,记录和播放。KMS建立在出色的GStreamer多媒体库之上,并提供以下功能:

网络流协议,包括HTTP,RTP和WebRTC。
支持媒体混合和媒体路由/调度的组通信(MCU和SFU功能)。
对实现计算机视觉和增强现实算法的过滤器的通用支持。
媒体存储支持WebM和MP4的写入操作以及GStreamer支持的所有格式的播放。
GStreamer支持的任何编解码器之间的自动媒体转码,包括VP8,H.264,H.263,AMR,OPUS,Speex,G.711等。

复杂性。
完全可处理的媒体流
Kurento不仅支持交互式人际通信(例如具有对话呼叫推送/接收功能的Skype),而且还支持人机(例如通过实时流传输的视频点播)和人机(例如远程视频录制) ,多传感器数据交换)通信。
媒体的模块化处理
通过媒体元素和管道实现的模块化允许通过“面向图形”的语言定义应用程序的媒体处理功能,其中应用程序开发人员可以通过链接适当的功能来创建所需的逻辑。
可审核的处理
Kurento能够为QoS监视,计费和审计生成丰富而详细的信息。
无缝IMS集成
Kurento旨在支持无缝集成到电话运营商的IMS基础架构中。
透明媒体适配层
Kurento提供了透明的媒体适配层,以使在屏幕大小,功耗,传输速率等方面具有不同要求的不同设备之间的融合成为可能。
Kurento模块体系
Kurento被设计为可插入框架,Kurento中的每个插件都称为一个模块,可以使用新的自定义模块扩展Kurento Media Server。更多信息,请阅读Kurento模块部分。

Kurento模块分为三类:

主要模块
与Kurento Media Server开箱即用合并:

kms-core:Kurento Media Server的主要组件。
kms-elements:Kurento Media Elements的实现(WebRtcEndpoint,PlayerEndpoint等)
kms-filters:Kurento过滤器的实现(FaceOverlayFilter,ZBarFilter等)
内置模块
Kurento团队开发的额外模块,用于增强Kurento Media Server的基本功能。到目前为止,有四个内置模块,分别是:

kms-pointerdetector:基于颜色跟踪检测视频流中指针的过滤器。
kms-chroma:过滤器,它在顶层使用颜色范围并使之透明,从而在后面显示另一个图像。
kms-crowddetector:用于检测视频流中人聚集的过滤器。
kms-platedetector:用于检测视频流中的车牌的过滤器。
定制模块
Kurento Media Server的扩展,提供了新的媒体功能。

第一步:安装Docker

安装Docker:

yum -y install docker

设置开机自启:

systemctl enable docker

启动Docker:

systemctl start docker

查看Docker当前的版本

docker version

至此,Docker已经安装完成,但是还要配置一下加速地址,因为Docker的镜像仓库默认在国外的服务器上,导致我们拉取镜像的速度很慢,因此,我们需要配置它的加速地址来加快镜像的拉取速度。

切换到Docker的配置目录里面:

cd /etc/docker/

查询当前目录所有的文件:

ls

daemon.json就是我们要修改的配置文件。

修改daemon.json:

vi daemon.json

填写以下内容:

"registry-mirrors": ["https://32xw0apq.mirror.aliyuncs"]

按wq保存退出

配置文件修改后,重启Docker:

systemctl restart docker

到此,Docker的安装已经完成,

第二步:安装Kurento

拉取镜像  docker pull kurento/kurento-media-server:6.15

创建容器并运行项目

docker run -d --name kms --network host kurento/kurento-media-server:6.15

要检查KMS是否已启动并正在侦听连接,请使用以下命令:

curl \
--include \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: 127.0.0.1:8888" \
--header "Origin: 127.0.0.1" \
http://127.0.0.1:8888/kurento

您应该得到类似于以下内容的响应:

HTTP/1.1 500 Internal Server Error
Server: WebSocket++/0.7.0
忽略“ Server Error ”消息:这是预期的,它实际上证明KMS已启动并正在侦听连接。

进入docker容器

docker exec -it kms /bin/bash

修改端口(默认端口是8888,也可以不用修改)

vi /etc/kurento/kurento.conf.json

按wq保存退出

配置文件修改后,重启Docker容器

docker restart kms

第三步  安装coturn

#安装依赖
yum install -y openssl-devel libevent-devel git

#clone 源码
git clone https://github/coturn/coturn.git
cd coturn
./configure
make
make install

创建配置文件

cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf

在配置文件末尾加入一下内容

# 监听的端口

listening-port=3478

# 监听的内网IP(没有内网ip,把这个配置注释掉)

listening-ip=x.x.x.x

# 监听的外网IP

external-ip=x.x.x.x

# 设置账号密码

user=user:123456

指定配置文件启动服务

turnserver -v -r 外网ip -a -o -c /usr/local/turnserver/share/examples/turnserver/etc/turnserver.conf

注意:如果使用的是阿里云或腾讯云的服务器,要开发对应端口的访问,关闭对应端口的防火墙

可以用这个网址去测试stun和turn的有效性:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

测试stun
测试stun的时候不需要输入账号密码,只需要输入stun:


测试turn
需要输入turn地址,以turn:开头,以及账号密码

第四步 配置kurento服务器


进入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
修改stun 和turn 信息

stunServerAddress=xx.xx.xx.xx
stunServerPort=pp
turnURL=username:userpwd@xx.xx.xx.xx:pp?transport=tcp

重启kurento容器

#查看当前启动的容器
docker ps
docker restart kms

第五步:测试RTSP转webrtc播放视频流

关注我,在我的资源里面下载《RTSP转webrtc播放视频流demo》,在浏览器打开index.html进行测试。

记得修改kurento-media-server服务地址

 运行结果:

 完结。。。

本文标签: 打洞服务器视频ServerMedia