文档章节

Kurento简介

chapin
 chapin
发布于 2017/02/16 11:15
字数 1153
阅读 100
收藏 1
点赞 1
评论 0

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

© 著作权归作者所有

共有 人打赏支持
chapin
粉丝 18
博文 83
码字总数 102961
作品 0
成都
程序员
Kurento应用开发指南(以Kurento 5.0为模板) 目录

Kurento是什么 3 Kurento简介 3 2.1 WebRTC媒体服务器 3 2.2 Kurento 媒体服务器 4 2.3 Kurento API, 客户端和协议 5 2.4 使用Kurento创建应用程序 7 Kurento Media Server的安装与卸载 8 3....

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之一:简介,安装与卸载

Kurento是什么 Kurento是一个WebRTC媒体服务器,并且包含一个客户端API集合, 用以简化WWW和移动平台上的高级视频应用程序的开发。 Kurento的功能包括组通信,转码,记录,混音,广播和routi...

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫

5.2 教程3一对多的视频呼叫 这个示例页面应用程序使用WebRTC技术实现了一对多的视频呼叫。换句话说,它是一个基于页面的视频广播应用。 5.2.1 运行示例程序 运行这个DEMO之前,需要先安装 Ku...

小马_wolf ⋅ 2016/07/14 ⋅ 0

kurento学习进阶一(源码库依赖关系)

Developer Guide¶ This section is a comprehensive guide for development of Kurento itself. The intended reader of this text is any person who wants to get involved in writing c......

liuweihui521 ⋅ 04/13 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之五:kurento架构

Kurento 架构 和大多数的媒体通信技术一样,Kurento把所有的交互通信系统的关键功能抽象成两层(或平台): ?信令平台 系统中负责通信管理的部分,它的组成模块提供的功能有媒体协商,QoS参数协...

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld

Kurento教程 这部分包含了如何使用Kurento框架的教程,以创建不同类型WebRTC和多媒体应用。 教程包含下面三个方面: ? Java: These show applications where clients interact with an applic...

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之四:示例教程 一对一视频呼叫

5.3 教程四-一对一的视频呼叫 这个页面应用程序使用WebRTC技术实现了一个一对一的呼叫,换言话说,这个应用提供了一个简单的视频电话 5.3.1 运行示例程序 运行这个DEMO之前,你需要先安装Kur...

小马_wolf ⋅ 2016/07/14 ⋅ 0

kurento开发android视频客户端

最近在搞kurento,流媒体服务。现在基于kurento进行开发,实现ios,android,web视频通话。目前web版本,ios版本都已开发完成,正常使用。但是android版本遇到问题,基于 google最 新的webrtc ...

wangjie142 ⋅ 2016/08/19 ⋅ 1

WebRTC流媒体服务器--Kurento

Kurento 是一个 WebRTC 流媒体服务器以及一些客户端API,有了它,开发WWW及智能手机平台的高级视频应用就变得更加容易。可以利用Kurento开发的应用类型包括,视频会议,音视频广播,音视频录...

dqzhangp ⋅ 2014/11/14 ⋅ 0

我所了解的webRTC是怎样的一种技术

通过浏览器对视频进行快速、安全的传输不用借助任何第三方平台应用可以实现吗 根据你的需求,不止一种方式可以在你的网站里添加WebRTC WebRTC(Web Real-Time Communication)是一项开源技术...

丁永 ⋅ 2016/01/18 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

容器之重命名镜像

使用docker tag命令来重命名镜像名称,先执行help,查看如何使用如下 mjduan@mjduandeMacBook-Pro:~/Docker % docker tag --helpUsage:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TA...

汉斯-冯-拉特 ⋅ 25分钟前 ⋅ 0

with 的高级用法

那么 上下文管理器 又是什么呢? 上下文管理器协议包含 __enter__ 和 __exit__ 两个方法。with 语句开始运行时,会在上下文管理器对象上调用 __enter__ 方法。with 语句运行结束后,会在上下...

阿豪boy ⋅ 44分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 44分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 56分钟前 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

[Err] ORA-24344: success with compilation error

从txt文本复制出创建function的脚本,直接执行,然后报错:[Err] ORA-24344: success with compilation error。 突然发现脚本的关键字,居然不是高亮显示。 然后我把脚本前面的空格去掉,执行...

wenzhizhon ⋅ 今天 ⋅ 0

Spring Security授权过程

前言 本文是接上一章Spring Security认证过程进一步分析Spring Security用户名密码登录授权是如何实现得; 类图 调试过程 使用debug方式启动https://github.com/longfeizheng/logback该项目,...

hutaishi ⋅ 今天 ⋅ 0

HAProxy基于KeepAlived实现Web高可用及动静分离

前言 软件负载均衡一般通过两种方式来实现: 基于操作系统的软负载实现 基于第三方应用的软负载实现 LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。 ...

寰宇01 ⋅ 今天 ⋅ 0

微软自研处理器的小动作:已经开始移植其他平台的工具链

微软将 Windows 10 、Linux 以及工具链如 C/C++ 和 .NET Core 运行时库、Visual C++ 2017 命令行工具、RyuJIT 编辑器等移植到其自主研发的处理器架构 E2。微软还移植了广泛使用的 LLVM C/C++...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部