Kurento Media Server (KMS) is a multimedia server package that can be used to develop advanced video applications for WebRTC platforms
Kurento 是一个多媒体服务器,能用于开发高级视频应用的WebRTC平台。
Kurento使用一个基于JSON-RPC协议开发的Kurento协议,默认支持js和java。三种典型使用场景为:
- 直接在WebRTC浏览器使用Kurento JavaScript SDK和KMS连接。(仅推荐用于快速测试和开发,不推荐用于正式产品)
- 创建一个Java EE应用服务器,WebRTC浏览器和应用服务器交互,应用服务器和KMS交互。
-
创建一个NodeJS应用服务器,WebRTC浏览器和应用服务器交互,应用服务器和KMS交互。
Kurento设计原则:
- 媒体和应用服务分离。
- 使用于云部署。
- 媒体流水线,增加,减少和调整处理单元来完成功能。
- 服务应用化,给外部完整的功能。
- 端到端的交互能力。
- 完整的媒体流处理能力。
- 媒体处理的模块化。
- 处理的可审计,监控。
- IMS无缝整合。
- 透明的媒体代理适配层。
Kurento模块:
- 媒体处理单元和媒体流水线(Media Elements and Media Pipelines)
- 媒体单元,一个处理媒体流的功能单元。它又可以分为4种类型:
- 输入终端(Input Endpoints)
- 过滤器(Filters)
- 分线器(Hubs)/ 集线器
- 输出终端(Output Endpoints)
- 媒体流水线(Media Pipeline),媒体处理单元链,像流水线一样处理媒体。
- 媒体单元,一个处理媒体流的功能单元。它又可以分为4种类型:
- 终端(Endpoint)
- WebRTCEndpoint, 是一个输入输出终端,采用WebRTC技术。
- RtpEndpoint, 是一个输入输出终端,采用RTP协议,并使用SDP协议协商媒体和建立会话。
- HttpPostEndpoint 是一个输入终端,采用HTTP POST接受媒体文件输入。
- PlayerEndpoint 是一个输入终端,从文件系统,HTTP URL或者RTSP URL接受文件播放,并且把内容推向媒体流水线(Media Pipeline)。
- RecorderEndpoint 是一个输入终端,记录存储媒体。
-
过滤器(Filters)
- ZBarFilter 检测视频流中的二维码和条形码。如果检测到,就发送一个事件 CodeFoundEvent,客户端可以监听此事件。
- FaceOverlayFilter 检测视频流中的脸,并且可以用一个可配置的图片替换。
- GstreamerFilter 是一个通用的过滤器,能够把一个 GStreamer 推向媒体流水线。
-
Hubs
- Composite 把多个视频流合并成一个网格状的单个视频流。
- DispatcherOneToMany 单个视频流分发。
- Dispatcher 路由视频流。