文档章节

Kurento API 参考

chapin
 chapin
发布于 2017/02/16 15:53
字数 1465
阅读 45
收藏 0
点赞 1
评论 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:

© 著作权归作者所有

共有 人打赏支持
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
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
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
0
Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld

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

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

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

小马_wolf
2016/07/14
89
0
kurento开发android视频客户端

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

wangjie142
2016/08/19
486
1
我所了解的webRTC是怎样的一种技术

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

丁永
2016/01/18
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部