文档章节

Kurento简介

chapin
 chapin
发布于 2017/02/16 11:15
字数 1153
阅读 3.3K
收藏 1

行业解决方案、产品招募中!想赚钱就来传!>>>

WebRTC 媒体服务器

WebRTC是一项开源技术,它能够通过JavaScript API实现网页浏览器间的实时通信。它被认为是一种P2P技术,不用通过任何类型的媒体中继, 能实现浏览器间的实时通信。这种方式能足以实现一些基本的应用,但是有些功能,如组通信,媒体流录制,媒体广播或媒体转码是很难实现的。基于这个原因,很多应用还是需要有媒体服务器。

Peer-to-peer WebRTC approach vs. WebRTC through a media server

在概念上,WebRTC媒体服务器是一种多媒体中继(它位于两个通信端的中间)。媒体服务器能处理媒体流,并有各种功能,包括组通信(分发一个端生成的媒体流到多个接收端,如像Multi-Conference Unit, MCU的工作方式),混合(转换多个输入流合成一个组合流),转码(在不兼容的客户端间选择codec和格式), 录制等。

Typical WebRTC Media Server capabilities

Kurento 媒体服务器

Kurento架构的核心是媒体服务器,它被命名为Kurento媒体服务器(KMS)。Kurento媒体服务器的媒体处理能力是插件式的,意思是它的功能都是可以被激活和关闭插件模块。而且,开发者可以无缝地创建额外的模块来扩展Kurento媒体服务器并动态插入。

Kurento媒体服务器提供即时可用的组通信,混合,转码,录制和播放。另外,它还提供一些高级的媒体处理模块,包括有计算机视觉,虚拟现实,透镜等。

Kurento Media Server capabilities

Kurento API, 客户端和协议

Kurento媒体服务器的能力是通过Kurento API呈现给应用开发者的。这些API是通过叫做Kurento Client库实现的。Kurento提供了两种类型的客户端库: Java和JavaScript。如果你希望使用其它的语言,可以通过Kurento 协议来直接操作 Kurento。这个协议允许控制 Kurento媒体服务器,它是基于标准的网络协议如WebSocketJSON-RPC

下图显示了Kurento客户端的三种应用场景:

  • 在兼容WebRTC的浏览器上直接使用 Kurento JavaScript Client
  • 在Java EE Application Server上使用Kurento Java Client
  • 在Node.js 服务器上使用Kurento JavaScript Client

Connection of Kurento Clients (Java and JavaScript) to Kuento Media Server

这三种场景在教程中都有完整的示例程序。

Kurento Client的API是基于Media Element的概念,每个Media Element都有特定的媒体能力。例如,WebRtcEndpoint有发送和接收WebRTC媒体流的能力;RecorderEndpoint 有将接收到的媒体流存储到文件的能力;FaceOverlayFilter 能检测视频流中的人脸并添加一个特定的图片在人脸之上。Kurento拥有丰富的媒体元素工具箱来做为它的API的一部分。

Some Media Elements provided out of the box by Kurento

更好的理解这些概念需要参见本文档中关于 Kurento APIKurento Protocol 的章节。你同样还需要看看Java文档和JS文档:

使用Kurento创建应用程序

从应用程序开发人员的角度来看,媒体元素就像是乐高积木:你只需选择应用程序想要的元素,然后再它连接到想要的拓扑结构中。在Kurento的术语中,媒体元素的连接图被称作** 媒体管道 **。因此,当你想创建一个管道时,开发人员需要确定想要使用的媒体元素的能力,并确定媒体元素间如何连接的拓扑图。这些连接是通过连接原语控制(以Kurento Client APIs方式显现)。这些原语以拓扑上后续的元素作为参数,激活本元素作为源:

sourceMediaElement.connect(sinkMediaElement)

例如,如果你想创建一个录制WebRTC流到文件的应用程序,你需要两个媒体元素:WebRtcEndpoint 和 RecorderEndpoint。当一个客户端连接到这个应用程序时,你需要实例化这两个媒体元素,并使用 WebRtcEndpoint (它用来接收WebRTC流)来接收流后输送给RecorderEndpoint (它用来将媒体流录制到文件)。最后,你需要连接它们,这样就能实现将前一个媒体元素接收到的流输送给后一年媒体元素, 像下面这样:

WebRtcEndpoint.connect(RecorderEndpoint)

为了简化在客户端的WebRTC流的处理,Kurento提供了一个叫WebRtcPeer的实体,而且,标准的WebRTC API (getUserMedia, RTCPeerConnection,and so on) 同样能连接到WebRtcEndpoints。更多的信息可以参见示例程序的章节。

Simple Example of a Media Pipeline

上一篇: Kurento架构
下一篇: 什么是Kurento
chapin
粉丝 21
博文 86
码字总数 107071
作品 0
成都
程序员
私信 提问
加载中
请先登录后再评论。
开源数据访问组件--Smark.Data

Smark.Data是基于Ado.net实现的数据访问组件,提供基于强类型的查询表达式进行灵活的数据查询,统计,修改和删除等操作;采用基于条件驱动的操作模式,使数据操作更简单轻松;内部通过标准SQL...

泥水佬
2013/03/12
2.5K
0
kubernetes+docker监控之简介

kubernetes+docker监控 Docker的监控原则:根据docker官方声明,一个容器不建议跑多个进程,所以不建议在容器中使用agent进行监控(zabbix等),agent应该运行在宿主机,通过cgroup或是docke...

perofu
2016/07/19
6.4K
10
YAML简介与使用实例

一、YAML介绍 YAML:是YAML Ain't a Markup Language(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:Yet Another Markup Language(另外一种置标语言),但为了强调这种语言以数...

孟飞阳
2016/07/12
1.2K
3
教程分享:Unreal SDK 游戏开发从入门到精通(UnrealScript语法、UI Scene界面、UDK独立开发游戏)

Unreal SDK 游戏开发从入门到精通(UnrealScript语法、UI Scene界面、UDK独立开发游戏) 课程讲师:Shark 课程分类:.Net 适合人群:初级 课时数量:56课时 用到技术:UnrealScript、UDK动画系...

光大不如深发展
2014/06/13
48
0
Jade5.0的安装和设置

  jade使用教程简介   1.Jade5.0的安装和设置   Jade5.0都是自动安装的,这不成问题。要把PDF卡片引入,先将ICDD的光盘插入,然后pdf/setup/selectall/,其它按提示进行。可以对优选项进...

内推网
2015/11/25
32
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 上传文件

package com.taven.demo;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframewor......

tavenpy
24分钟前
4
0
GitHub 标星 44k!史上最全技术面试手册!

整理:迷妹 大家好,我是为前端娱乐圈操碎了心的小迷妹,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标。 每...

祈澈菇凉
今天
0
0
Sublime Text3配置及控制台乱码[cmd杀死进程乱码/编译文件乱码]解决方法

Sublime Text3配置及控制台乱码[cmd杀死进程乱码/编译文件乱码]解决方法 参考文章: (1)Sublime Text3配置及控制台乱码[cmd杀死进程乱码/编译文件乱码]解决方法 (2)https://www.cnblogs...

osc_wl6d9wri
25分钟前
0
0
JS实现网页轮播(每隔5秒切换)

function onload() { <%=sb_js_onload.ToString() %> var timer = setInterval("jump_url()", 1000); } var arrurl = ["screen.aspx?code......

_Somuns
25分钟前
7
0
程序猿:论学习方式的重要性

大家都知道,做我们开发这行的,最核心的竞争力就是学习能力。技术一直在变化,框架一直在更新,学还是不学。 不学,你会落伍,学,太累了,根本学不过来。学习只要找对了方法,也没那么累。...

osc_zg8wy3xa
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部