文档章节

Kurento API 参考

chapin
 chapin
发布于 2017/02/16 15:53
字数 1465
阅读 91
收藏 0

Kurento媒体服务器提供了一套API给高级语言使用,以用于应用程序开发人员来控制它。这些API可以被用于Java或Javascript开发的Kurento 客户端。如果你更喜欢其它开发语言,你可以使用基于 WebSocket 或JSON-PRC 的Kurento协议。

在下面的章节中,我们将讲解Kurento API, 我们将显示Kurento媒体服务器提供给客户端的媒体能力。 如果你想看使用kurento的工作DEMO,你可以翻到前面看示例教程。

媒体元件和媒体管道

对于应用程序开发人员来说,Kurento提供了两个概念来作为构建模块:

媒体元件

媒体元件是对媒体流执行指定动作的功能单元。对于应用程序开发人员来说,媒体元件是每个能力的一种实现方式,它表示为自包含的"黑箱", 开发人员在使用时,不需要理解底层的实现细节。 媒体元件具有从其它元件(通过媒体源)接收媒体以及发送媒体到其它元素(通过媒体sink)的能力。 依赖于它们的能力,媒体元件可划分成不同的类型:

  • 输入端点: 指具有接收媒体并注入到管道能力的媒体元件。有多种类型的输入端点。文件输入端点用来从文件获取媒体;网络输入端点用来从网络获取媒体; 捕捉输入端点有直接从摄像头或其它类型的硬件源上捕捉媒体流的能力。

  • 滤镜:指负责媒体转码或分析的媒体元件。因此,滤镜的功能包括混合流,混间,分析,填充等

  • 集线器:指负责管理一个管道中多个媒体流的媒体对象。 一个集线器可以有多个集线端口,以连接多个媒体元件。依据集线类型,可以有多种方式来控制媒体。例如,Composite集线器可以将多个输入视频流合并到一个唯一的输出视频流。

  • 输出端点: 指具有将媒体流从管道中输出的能力的媒体元件。因此,也有多种类型的输出端点,如文件,网络,屏幕等。

媒体管道:

媒体管道是一个媒体元件的链,在这个链中,输出流是由一个源元件输入到一个或多个其它媒体元件处理后再输出的。 因此,管道表示能执行一系列流操作的机器。

实现了从一个WebRtcEndpoint接收媒体流,叠加一个图像到侦测到的人脸上并返回结果流的交互式多媒体应用

例子实现了从一个WebRtcEndpoint接收媒体流,叠加一个图像到侦测到的人脸上并返回结果流的交互式多媒体应用。

Kurento API是面向对象的API,因此,有一些类需要实例化。这些类定义的操作可以被这个类的对象所引用 。这些类和其它相关类是继承关系,继承操作是从父类到子类的。

下面的类图显示了Kurento API中主类的关系。

输入图片说明

从图中可以看出,Endpoint, Filter,HubPort的父类是MediaElement,而媒体元件、媒体管道,集线器的父类都是MediaObject。另外,媒体管道可拥有多个媒体元件,Hub可以拥有多个HubPort,而MediaObject可以拥有一个媒体管道。

端点

先来讨论Kurento提供的不同种类的端点。

WebRtcEndpoint 是一种有输出和输入的端点,它通过Web为RTC(Real Time Communictions)提供媒体流。它为浏览器间的通信实现了WebRTC技术。

输入图片说明

** RtpEndpoint **是一种有输出和输入的端点。它为两个远程的网络节点,通过RTP协议,提供双向的内容传输能力。正如你所想的,为了通过网络发送和接收媒体,它使用了RTP协议,并使用 SDP 做媒体协商;

输入图片说明

** HttpPostEndpoint ** 是一种只有输入的端点,它使用http POST请求,就像HTTP文件上传功能那样,接收媒体流。

输入图片说明

** PlayerEndpoint ** 是一种只有输入的端点,它从文件系统,Http URL 或 RTSP URL接收内容并将其注入到媒体管道中。

输入图片说明

** RecorderEndpoint **是一种只有输出的端点。它提供了以可靠模式存储内容的功能,它包含音频和视频的媒体接收器垫。

输入图片说明

下面的类图显示了主要的端点类的关系:

输入图片说明

滤镜

滤镜是执行媒体处理,机器视觉,虚拟现实等的媒体元件。我们来看看Kurento提供的滤镜:

** ZBarFilter滤镜 ** 检查视频流的 QR 和 条形码。当发现有条形码时,滤镜会触发 CodeFoundEvent 事件,客户端可以添加一个对这个事件的监听器并执行相应的动作。

输入图片说明

FaceOverlayFilter滤镜 检查视频流中的人脸,并在人脸上叠加一个可设置的图片。

输入图片说明

GStreamerFilter滤镜 它是一个通用的滤镜接口,它能使 Kurento媒体管道使用GStreamer滤镜。

输入图片说明

下面的类图显示了主要的滤镜类的关系:

输入图片说明

集线器

集线器是负责管理管道中多媒体流的媒体对象。一个集线器可以有多个连接其它媒体元件的集线端口,我们来看下 Kurento 提供的集线器:

Composite 是一个混合多个输入的音频流,并与视频流组成网格集线器。

输入图片说明

DispatcherOneToMany 是发送指定输入流到多个连接的输出集线端口的集线器。

输入图片说明

** Dispatcher ** 是一个允许在任意输入-输出集线端口对做路由的集线器。

输入图片说明

下面是集线器的类关系图:

输入图片说明

Kurento Client的细节可以看文档 JavaDoc/JsDoc:

© 著作权归作者所有

共有 人打赏支持
上一篇: Kurento协议
下一篇: Kurento架构
chapin
粉丝 20
博文 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
427
0
Kurento应用开发指南(以Kurento 5.0为模板) 之一:简介,安装与卸载

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

小马_wolf
2016/07/14
296
0
Kurento应用开发指南(以Kurento 5.0为模板) 之五:kurento架构

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

小马_wolf
2016/07/14
187
0
Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫

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

小马_wolf
2016/07/14
101
0
WebRTC流媒体服务器--Kurento

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

dqzhangp
2014/11/14
12.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL学习笔记之二

数据库的操作总结就是:增删改查(CURD),今天记录一下基础的检索查询工作。 检索MySQL 1.查询表中所有的记录 mysql> select * from apps;+----+------------+-----------------------+------...

凌宇之蓝
23分钟前
0
0
PaddlePaddle-GitHub的正确打开姿势

GitHub是一个面向开源及私有软件项目的托管平台、也是项目版本管理工具,会使用它是程序员入门的必备技能。PaddlePaddle也不例外,所有的源码及项目进展都在GitHub上开源公布。但对于刚入门写...

深度学习之路
23分钟前
0
0
最强NLP模型BERT可视化学习

摘要: 最强NLP模型谷歌BERT狂破11项纪录,全面超越人类,本文通过可视化带你直观了解它。 2018年是自然语言处理(Natural Language Processing, NLP)领域的转折点,一系列深度学习模型在智...

阿里云官方博客
30分钟前
1
0
导出功能

public void downloadD(HttpServletRequest request, HttpServletResponse res,String contractName, String contractPath) throws IOException {// FileAttach fileAttach = fileA......

卖星星的小矮人
34分钟前
0
0
gradle 打包可执行jar包

group 'android.com'version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.8repositories { mavenCentral()}jar { manifest { attributes ('Main-......

zdglf
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部