kurento 6.14.0文档翻译 第一章 关于kurento与webrtc
- 第一章:关于kurento与webrtc
Kurento是一个Webrtc媒体服务,通过客户端API为网页和手机平台更轻松的开发高级的视频程序,Kurento包括组通信、转码、录制、混淆、广播和路由音视频流。
通过Kurento以下特性可以更容易的构建多媒体处理程序:
- 动态的webrtc媒体管道:Kurento允许通用的媒体管道连接webrct像浏览器或手机应用程序,这些媒体管道基于诸如播放器,记录器,混音器等可组合元素,即使在媒体已经流通的情况下,也可以在任何时间点进行混合匹配,**或停用这些元素。
- 客户端/服务器架构:应用App是基于客户端服务器架构,Kurento媒体服务器(KMS)是服务器,并提供实现Kurento协议的WebSocket接口,该接口允许客户端应用程序定义管道拓扑。
- JAVA和javascript应用:使用KMS部署的三层架构,浏览器当前客户端连接KMS服务器,使用官方的kurento客户端库,使用JAVA和javascript开发客户端程序,客户端的其它语言也能基于websocket协议开发出来。
- 第三方模块:kurento媒体服务器可以通过插件扩展,允许添加自定义的媒体流管道,允许集成音视频处理算法在所有的webrtc应用里 像计算机视觉,现实增强,视频索引和语音分析, 所有的这些都要创建一个新的kurento元素,并在所有的媒体流通道上使用。
这个文档包括高层次的说明使你成为KMS服务开发者,开发kurento客户端应用超出了本文档的范围。
Kurento代码是开源的遵循apache开源协议并提交到github上。
1.1 webrtc媒体服务
Webrtc是通过api和协议机制为浏览器和手机应用提供点对点的实时通信能力,它初步设想成没有基础多媒体插件也能通过浏览器与浏览器互联。这个模型仅能够创建基本的网页应用,像群组通信,媒体流录制,媒体流广播,媒体流转码这些比较困难,因此许多应用必须要一个多媒体中间件。
综上所诉,一个webrtc服务只是多媒体的中间件,当这个媒体流需要多一端到另一端,多媒体服务有能力处理输入媒体流和提供不同的输出流比如:
组通信:分布的多媒体流通过一个连接接收比如mcu
混淆:处理多个输入流整合成单个流。
转码:一个适配编码和格式适应兼容的客户端。
1.2kurento媒体服务器
kurento主要的组件是kms,负责媒体流的传输,处理,录制和回放,kms基于非常出色的Gstream多媒体库,并提供以下特性:
1.网络流协议包括http,rtp和webrtc
2.组通信(mcu和sfu功能)提供两种媒体混淆和媒体流路由/调度
3.提供通用的电脑视觉和现实增强算法
媒体存储提供写入格式选项webm和mp4,播放由gstreamer提供。
自动的媒体流转码由gstreamer提供包括Vp8,h.264,h.263,amr,opus,speex,g.711等等
1.3 kurento设计原则
Kurento设计基于以下主要原则:
信号和媒体是两个独立的平面:信号和媒体是两个独立的平面,并且设计了Kurento,以便应用程序可以分别处理多媒体处理的那些方面。
分布式的媒体流和应用服务:kurento媒体服务和应用程序可以在不同的机器之间并行,升级和分布。单个应用可以调用很多的kurento服务,对于kurento服务同样适用,一个kurento服务可以处理多个客户端请求。
更适合云:kurento适合集成到云环境并充当PAAS(平台服务)组件。
多媒体管道:通过媒体管道链接媒体元素是挑战复杂多媒体处理
应用程序开发:开发人员无需了解内部Kurento Media Server的复杂性:所有应用程序都可以部署到开发人员喜欢的任何技术或框架中,客户端到服务器。 从浏览器到云服务。
端到端的通信能力:kurento提供端到端的通信能力所以开发人员不需要详细的了解传输、编/转码和在客户端渲染媒体流。
全部可处理的媒体流:kuento不仅仅可以人与人之间的互动像skype一样,也可以人与机器和机器与机器之间交流。
模块化的媒体处理:横块化是由应用程序的面向图行语言开发自定义的媒体元素与管道功能,程序开发人员可创建期望的逻辑通过适当的功能。
可审核的处理:kurento可以为Qos生成丰富的和详细的信息监控、帐单和审计。
与IMS软件无缝集成:kurento设计成与IMS电话运营商的基础架构无缝集成。
透明的媒体适配层:为了对屏幕尺寸、功耗和传输速率等有不同要求的不同设备之间的融合,kurento提供了透明的媒体适配层