关于Kurento 和 WebRTC
关于Kurento 和 WebRTC
Kurento是一个WebRTC媒体服务器和一组客户端API,简化了针对web和智能手机平台的高级视频应用程序的开发。它的特点包括通信组、转码、录音、混音、广播和视听流的路由。
Kurento提供了一个多媒体框架,该框架通过以下功能简化了构建多媒体应用程序的任务:
动态WebRTC媒体管道:Kurento允许自定义媒体管道连接到WebRTC对等端,如web浏览器和移动应用程序。这些媒体管道基于可组合的元素,如播放器、录音机、混音器等,这些元素可以在任何时间点进行混合和匹配、激活或停用,即使媒体已经在流动。客户机/服务器架构:使用Kurento开发的应用程序遵循客户机/服务器架构。Kurento媒体服务器(KMS)是一个服务器,它提供了一个WebSocket接口来实现Kurento协议,该接口允许客户端应用程序定义管道拓扑。Java和JavaScript客户端应用程序:KMS部署的典型用例由三层体系结构组成,用户浏览器通过中间客户端应用程序与KMS服务器交互。有几个官方的Kurento客户端库,支持在客户端应用程序中使用Java和JavaScript。其他语言的客户端可以按照WebSocket协议轻松实现。第三方模块:Kurento媒体服务器有一个基于插件的可扩展架构,允许第三方实现可以添加到其媒体管道的模块。这允许将媒体处理算法集成到任何WebRTC应用程序,例如集成计算机视觉、增强现实、视频索引和语音分析。所有需要的是创建一个新的KurEnto元素,并在任何已经存在的媒体管道中使用它。
本文档包含如何成为KMS开发人员的高级说明。Kurento客户机应用程序的开发超出了本文档的范围,这里不作解释。
Kurento媒体服务器的代码是开源的,根据Apache许可2.0版的条款发布,在GitHub上可用。
WebRTC媒体服务器
WebRTC是一组协议、机制和api,通过对等连接为浏览器和移动应用程序提供实时通信(RTC)功能。它被认为是一种允许浏览器直接通信而不需要任何基础设施的中介的技术。然而,这种模型只够创建基本的web应用程序;诸如组通信、媒体流记录、媒体广播或媒体转码之类的功能很难在其上实现。因此,许多应用程序最终需要一个中间媒体服务器。
Peer-to-peer WebRTC approach vs. WebRTC through a media server
从概念上讲,WebRTC媒体服务器只是一个多媒体中间件,当从源到目的地移动时,媒体流量会通过它。
媒体服务器能够处理传入的媒体流并提供不同的结果,例如:
组通信:在多个接收器之间分发一个对等方生成的媒体流,即充当多会议单元(“MCU”)。混合:将多个传入流转换为一个单一的复合流。转码:在不兼容的客户机之间动态调整编解码器和格式。记录:以一种持久的方式存储对等方之间交换的媒体。
Typical WebRTC Media Server capabilities
Kurento Media Server
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 Media Server capabilities
Kurento设计原则
Kurento的设计基于以下主要原则:
独立的媒体和信号平面
信令和媒体是两个独立的平面,Kurento的设计使应用程序能够分别处理多媒体处理的这些方面。
媒体和应用服务的分发
Kurento媒体服务器和应用程序可以在不同的机器之间进行配置、升级或分发。
单个应用程序可以调用多个Kurento媒体服务器的服务。相反的情况也适用,即Kurento媒体服务器可以处理多个应用程序的请求。
适合云端
Kurento适合集成到云环境中,充当PaaS(平台即服务)组件。
媒体管道
通过媒体管道链接媒体元素是一种挑战多媒体处理复杂性的直观方法。
应用程序开发
开发人员不需要知道Kurento媒体服务器的内部复杂性:所有应用程序都可以部署在开发人员喜欢的任何技术或框架中,从客户端到服务器。从浏览器到云服务。
端到端通信能力
Kurento提供端到端的通信功能,因此开发人员无需处理在客户端设备上传输、编码/解码和呈现媒体的复杂性。
完全可处理的媒体流。
Kurento不仅支持交互式人际通信(例如,类似Skype的通话推送/接收功能),还支持人对机(例如,通过实时流媒体按需视频)和机对机(例如,远程视频录制、多传感器数据交换)通信。
媒体模块化处理
通过媒体元素和管道实现的模块化可以通过面向图的语言定义应用程序的媒体处理功能,应用程序开发人员可以通过链接适当的功能来创建所需的逻辑。
可审计处理
Kurento能够为QoS监控、计费和审计生成丰富而详细的信息。
无缝IMS集成
Kurento旨在支持与电话运营商的IMS基础设施的无缝集成。
透明媒体适配层。
Kurento提供了一个透明的媒体适配层,使得在屏幕尺寸、功耗、传输速率等方面具有不同要求的不同设备之间的融合成为可能。