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客户端的三种场景
- 直接在兼容WebRTC的浏览器使用kurento 的javascript客户端库
- 在JavaEE应用服务使用kurento的java客户端
- 在node.js服务使用kurento 的javascript客户端库
三种技术的完整的例子可以查看教程章节(ps:第六章)
Kurento客户端API是基于媒体元素(Media Elements)概念,一个媒体元素包含一个特定的媒体功能,比如,WebRtcEndpoint媒体元素包含发送和接收WebRTC的媒体流,RecorderEndpoint媒体元素有记录接收的任何媒体流到文件系统; FaceOverlayFilter可以检测交换的视频流上的面部,并在其上方添加特定的覆盖图像,kurento暴露了很多有关媒体元素的API。
为了更好地理解这些概念,建议看一下Kurento API和Kurento协议两节。你也可以查看一下kurento客户端引用文档API
Kurento 模块
Kurento设计成可插件化框架,KMS默认使用几个模块,如kms-core,kms-elements和kms-filters.
此外,还有其他内置模块可以增强KMS提供的功能。如kms-crowddetector, kms-pointerdetector, kms-chroma, and kms-platedetector。
最后,可以使用新的自定义模块扩展KMS
更多相关信息可以查看kurento模块章节(ps:17章)
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)