kurento 6.14.0文档翻译 第七章 kurento特性

这一章总结kurento提供的特性,并链接到最重要的文档页面

7.1kurento API,客户端和协议

KMS通过称为Kurento API的RPC API公开其所有功能,任何类形的JSON兼容客户端都可以使用这个API,但是推荐的工作方式是使用kurento客户端库,当前提供java、javascript、node.js支持。

如果你使用不同程序语言,可以按照《 Kurento协议》的规范编写自定义客户端库,基于websocket和json-rpc

以下图片展示使用kurento客户端的三种场景

  1. 直接在兼容WebRTC的浏览器使用kurento 的javascript客户端库
  2. 在JavaEE应用服务使用kurento的java客户端
  3. 在node.js服务使用kurento 的javascript客户端库

kurento 6.14.0文档翻译 第七章 kurento特性

三种技术的完整的例子可以查看教程章节(ps:第六章)

Kurento客户端API是基于媒体元素(Media Elements)概念,一个媒体元素包含一个特定的媒体功能,比如,WebRtcEndpoint媒体元素包含发送和接收WebRTC的媒体流,RecorderEndpoint媒体元素有记录接收的任何媒体流到文件系统; FaceOverlayFilter可以检测交换的视频流上的面部,并在其上方添加特定的覆盖图像,kurento暴露了很多有关媒体元素的API。

为了更好地理解这些概念,建议看一下Kurento API和Kurento协议两节。你也可以查看一下kurento客户端引用文档API

kurento 6.14.0文档翻译 第七章 kurento特性

 

Kurento 模块

Kurento设计成可插件化框架,KMS默认使用几个模块,如kms-core,kms-elements和kms-filters.

此外,还有其他内置模块可以增强KMS提供的功能。如kms-crowddetector, kms-pointerdetector, kms-chroma, and kms-platedetector。

最后,可以使用新的自定义模块扩展KMS

更多相关信息可以查看kurento模块章节(ps:17章)

kurento 6.14.0文档翻译 第七章 kurento特性

 

7.3RTP流

除了WebRTC连接,KMS管理标准的RTP流,允许将KMS实例连接到各种设备。

处理RTP连接时要注意两个主题:KMS实现的自动拥塞控制算法(请参阅拥塞控制/ REMB)和NAT遍历功能(请参见NAT遍历)。

7.4拥塞控制/ REMB

Kurento实现Google拥塞控制算法,它能够生成和解析abs-send-time RTP头和REMB RTCP消息。

能通过在SDP提议中传递媒体级属性goog-remb来启用它。 例如:

v=0

o=- 0 0 IN IP4 127.0.0.1

s=-

c=IN IP4 127.0.0.1

t=0 0

m=video 5004 RTP/AVPF 103

a=rtpmap:103 H264/90000

a=rtcp-fb:103 goog-remb

a=sendonly

a=ssrc:112233 cname:[email protected]

 

a = rtcp-fb是RTCP反馈功能属性,如RFC 4585中所定义

KMS在连接的发送方和接收方分支之间实现REMB传播,这意味着当将KMS用作视频发送方和一个或多个视频接收方之间的代理时, 来自接收器的最小REMB值将中继到发送器, 这允许发送方选择较低的比特率,以适应另一端连接到KMS的所有接收方, 有关什么是REMB及其如何适用于RMCAT的更大项目的更多背景信息,请阅读我们的知识库文件:拥塞控制(RMCAT)