前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >互动直播之WebRTC服务器Kurento实战

互动直播之WebRTC服务器Kurento实战

原创
作者头像
后端老鸟
修改2020-05-25 10:42:59
4K0
修改2020-05-25 10:42:59
举报
文章被收录于专栏:服务端技术服务端技术

【转载请注明出处】:https://cloud.tencent.com/developer/article/1631966

1. Kurento

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

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

Kurento的设计基于以下主要原则:

  • 分开的媒体和信令平面 信号媒体是两个独立的平面,以便应用程序可以分别处理多媒体处理的那些方面。
  • 媒体和应用服务的分配 Kurento Media Server和应用程序可以在不同的机器之间并置,升级或分布。 一个应用程序可以调用多个Kurento Media Server的服务。相反的情况也适用,即Kurento Media Server可以满足多个应用程序的请求。
  • 适用于云 Kurento适合集成到云环境中以充当PaaS(平台即服务)组件。
  • 媒体管道 通过媒体管道链接媒体元素是一种挑战多媒体处理复杂性的直观方法。
  • 应用开发 开发人员无需了解内部Kurento Media Server的复杂性:所有应用程序都可以以开发人员喜欢的任何技术或框架部署,从客户端到服务器。从浏览器到云服务。
  • 端到端通信能力 Kurento提供端到端通信功能,因此开发人员无需处理在客户端设备上传输,编码/解码和呈现媒体的复杂性。
  • 完全可处理的媒体流 Kurento不仅支持交互式人际通信(例如具有对话呼叫推送/接收功能的Skype),而且还支持人机(例如通过实时流传输的视频点播)和人机(例如远程视频录制) ,多传感器数据交换)通信。
  • 媒体的模块化处理 通过媒体元素管道实现的模块化允许通过“面向图形”的语言定义应用程序的媒体处理功能,其中应用程序开发人员可以通过链接适当的功能来创建所需的逻辑。
  • 可审核的处理 Kurento能够为QoS监视,计费和审计生成丰富而详细的信息。
  • 无缝IMS集成 Kurento旨在支持无缝集成到电话运营商的IMS基础架构中。
  • 透明媒体适配层 Kurento提供了透明的媒体适配层,以使在屏幕大小,功耗,传输速率等方面具有不同要求的不同设备之间的融合成为可能。
Kurento模块体系

Kurento被设计为可插入框架,Kurento中的每个插件都称为一个模块,可以使用新的自定义模块扩展Kurento Media Server。更多信息,请阅读Kurento模块部分。

Kurento模块体系结构
Kurento模块体系结构
扩展的Kurento工具箱
扩展的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的扩展,提供了新的媒体功能。

2. 安装 EPEL 镜像源

3. 安装docker

4. 安装kurento

Kurento媒体服务器的端口(KMS)过程中默认监听8888客户端WebSocket连接。

容器运行后,您可以使用docker logs命令获取其日志输出:

docker logs --follow kms >"kms-$(date '+%Y%m%dT%H%M%S').log" 2>&1

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

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

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

5. 安装coturn

image.png
image.png

这样就说明已经可以启动了,接下来我们先停掉turnserver,重新配置。

turnserver 默认加载配置文件是etc/turnserver.conf或/usr/local/etc/turnserver.conf。

turnserver 默认使用的是SQLite数据库,如果是需要使用MySQL或者PostgreSQL,需要先初始化数据库,sql位置在/usr/local/share/turnserver/schema.sql

修改的turnserver.conf内容:

重新启动turnserver

记得开放使用的端口:

image.png
image.png

可以用这个网址去测试stun和turn的有效性:

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

测试stun

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

image.png
image.png

测试turn

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

image.png
image.png

5. 配置kurento服务器

进入kurento的镜像编辑kurento的配置文件:

修改stun 和turn 信息

重启kurento容器

6. kurento-hello-world

在函数function uiStart()里,增加一个叫iceservers的变量,格式如下:

再修改底下的options变量:

启动项目

启动完之后用谷歌或者火狐浏览器打开demo页面https://localhost:8443/

点击start启动

image.png
image.png

至此,最简单的HelloWorld已经完成。

【转载请注明出处】: https://cloud.tencent.com/developer/article/1631966

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Kurento
    • Kurento设计原则
      • Kurento模块体系
      • 2. 安装 EPEL 镜像源
      • 3. 安装docker
      • 4. 安装kurento
      • 5. 安装coturn
      • 5. 配置kurento服务器
      • 6. kurento-hello-world
      相关产品与服务
      多媒体处理
      多媒体处理(Multimedia Processing,MMP)是数据万象推出的音视频处理服务,集成音视频转码、极速高清、精彩集锦、超分辨率、数字水印等能力,满足传媒、文旅、电商等各行业多媒体处理需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档