![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
webrtc+licode+kurento
郑亚帅
热爱编程,热爱生活。
展开
-
基于Kurento的WebRTC移动视频群聊解决方案
说在前面的话:视频实时群聊天有三种架构: Mesh架构:终端之间互相连接,没有中心服务器,产生的问题,每个终端都要连接n-1个终端,每个终端的编码和网络压力都很大。群聊人数N不可能太大。 Router架构:终端之间引入中心服务器,学名MCU(Multi Point Control Unit),每个终端的视频流都发布到MCU服务器上,然后服务器负责编码发布多视转载 2017-02-04 13:36:41 · 5128 阅读 · 0 评论 -
Kurento模块开发指南之一:模块开发简介
17.1 Kurento 模块Kurento是一个可插拔的框架,这些插件,在Kurento中被称之为模块。Kurento定义了三种类型的模块:• 主模块, Kurento Media Server即插即用的组成部分– kms-core: Kurento Media Server的主要组成;– kms-elements: Kurento Media组件(包括WebRtcE转载 2017-02-06 15:05:51 · 1217 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 6.0为模板) 之八: Kurento协议
14.1 Kurento协议Kurento媒体服务器可以被两种外部Kurento客户端控制,如Java或JavaScript。这些客户端使用Kuernto协议来和KMS通信。Kurento协议是基于WebSocket协议,并使用了JSON-RPC V2.0 消息来提交请求和发送响应。14.1.1 JSON-RPC 消息格式Kurento协议使用JSON-RPC V2.0转载 2017-02-06 15:04:48 · 699 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 6.0为模板) 之七:Kurento API 参考
13.1 Kurento API 参考Kurento媒体服务器提供了一套API给高级语言使用,以用于应用程序开发人员来控制它。这些API可以被用于Java或Javascript开发的Kurento 客户端。如果你更喜欢其它开发语言,你可以使用基于WebSocket或JSON-PRC的Kurento协议。在下面的章节中,我们将讲解Kurento API, 我们将显示Kurento转载 2017-02-06 15:04:12 · 1033 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 6.0为模板) 之六:kurento架构
12.1 Kurento 架构和大多数的多媒体通信技术方案一样,Kurento把交互通信系统中的所有关键功能抽象成两层(或叫平面):>>> 信令平面 系统中负责通信管理的部分, 它由提供媒体协商,QoS参数协商,呼叫建立,用户注册,用户呈现等功能的模块组成;>>> 媒体平台 包括的功能包括媒体传输,媒体编码/解码和媒体处理, 它关心的是媒体的处理转载 2017-02-06 15:02:41 · 1561 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 5.0为模板) 之五:kurento架构
11. Kurento 架构和大多数的媒体通信技术一样,Kurento把所有的交互通信系统的关键功能抽象成两层(或平台):?信令平台系统中负责通信管理的部分,它的组成模块提供的功能有媒体协商,QoS参数协商,呼叫建立,用户注册,用户呈现等,都是信令层的功能;? Media Plane 媒体平台包括的功能包括媒体传输,媒体编码/解码和媒体处理,它关心的是媒体的处理。它和电转载 2017-02-06 15:00:59 · 1164 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 5.0为模板) 之四:示例教程 一对一视频呼叫
5.3 教程四-一对一的视频呼叫这个页面应用程序使用WebRTC技术实现了一个一对一的呼叫,换言话说,这个应用提供了一个简单的视频电话5.3.1 运行示例程序运行这个DEMO之前,你需要先安装Kurento Media Server.可以看前面的介绍。另外,你还需要先安装好 JDK (at least version 7), Maven, Git, 和 Bower。在Ubu转载 2017-02-06 15:00:06 · 889 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫
5.2 教程3一对多的视频呼叫这个示例页面应用程序使用WebRTC技术实现了一对多的视频呼叫。换句话说,它是一个基于页面的视频广播应用。5.2.1 运行示例程序运行这个DEMO之前,需要先安装 Kurento Media Server. 另外,还需要先安装JDK (at least version 7), Maven, Git, 及Bower。Nodejs及bower的安转载 2017-02-06 14:58:07 · 1099 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld
5. Kurento教程这部分包含了如何使用Kurento框架的教程,以创建不同类型WebRTC和多媒体应用。教程包含下面三个方面:? Java: These show applications where clients interact with an application server based on Java EE technology. The applicati转载 2017-02-06 14:57:22 · 750 阅读 · 0 评论 -
Kurento模块开发指南之二:开发示例 Pointer Detector Filter
17.1.2 模块教程1- Pointer Detector Filter这个页面应用由一个带有指针跟踪滤镜组件的WebRTC视频通信回看组成。Java 模块教程 1 - Pointer Detector Filter这个页面应用由一个带有指针跟踪滤镜组件的WebRTC视频通信回看组成。首先: 运行这个示例程序首先,需要安装Kurento Media Server来运转载 2017-02-06 15:06:26 · 535 阅读 · 0 评论 -
Kurento模块开发指南之三:开发示例 Chroma Filter
17.1.3 模块教程 2 - Chroma Filter这个页面应用由一个带有色度滤镜组件的WebRTC视频通信回看组成。Java 模块教程 2 - Chroma Filter这个页面应用由一个带有色度滤镜组件的WebRTC视频通信回看组成。首先: 运行这个示例程序首先,需要安装Kurento Media Server来运行这个示例,可以参看前面的安装指南。另外转载 2017-02-06 15:07:26 · 754 阅读 · 0 评论 -
带宽计算方法
一,基本概念 1.帧率:就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。高的帧率可以得到更流畅、更逼真的动画2.比特率:是指每秒传送的比特(bit)数。单位为bps(BitPerSecond),比特率越转载 2017-01-11 14:31:20 · 54088 阅读 · 0 评论 -
基于RTP的FEC前向丢错算法
转载 2017-01-11 12:17:27 · 1014 阅读 · 0 评论 -
什么是FEC/NACK
FEC (Forward Error Correction) 中文叫前向纠错 前向纠错技术(Forward Error Correction)在确保信号的长距可靠传输方面也起着非常重要的作用,逐渐成为必不可少的主流技术。这里借用光通讯的图来描述FEC的基本原理。图1 FEC在光通信中的位置 FEC技术是一种广泛应用于通信系统中的编码技术。以典型转载 2017-01-11 10:33:50 · 2441 阅读 · 0 评论 -
网络传输上的一种QoS方案
QoS出现的背景:而当网络发生拥塞的时候,所有的数据流都有可能被丢弃;为满足用户对不同应用不同服务质量的要求,就需要网络能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量:1、对实时性强且重要的数据报 文优先处理;2、对于实时性不强的普通数据报文,提供较低的处理优先级,网络拥塞时甚至丢弃。为了满足上述需求,QoS出现了,定义如下:QoS(Qua转载 2017-01-11 10:32:30 · 2372 阅读 · 0 评论 -
kurento-one2many-broadcast V6.0源码分析
kurento-one2many-call V6.0 源码分析 一、Web页面后台服务用命令行启动: $ mvn clean compile exec:Java启动成功后,在chorme浏览器的地址栏输入: http://localhost:8080即可看到如下页面 二、系统分析在这个应用程序员有两类用转载 2017-02-06 15:11:07 · 760 阅读 · 0 评论 -
kurento-hello-world V6.0源码分析
kurento-hello-world V6.0 源码分析 一、Web页面后台服务用命令行启动: $ mvn clean compile exec:Java启动成功后,在chorme浏览器的地址栏输入: http://localhost:8080即可看到如下页面 二、系统分析2.1 示例程序的框架转载 2017-02-06 15:10:00 · 821 阅读 · 1 评论 -
Kurento模块开发指南之五:开发示例 Plate Detector Filter
17.1.5 模块教程 4 - Plate Detector FilterThis web application consists on a WebRTC video communication in mirror (loopback) with a plate detector filter element.Java Module Tutorial 4 - Plate Detect转载 2017-02-06 15:08:37 · 729 阅读 · 0 评论 -
Kurento模块开发指南之四:开发示例 Crowd Detector Filter
17.1.4 模块教程 3 - Crowd Detector FilterThis web application consists on a WebRTC video communication in mirror (loopback) with a crowd detector filter. This filter detects people agglomeration in v转载 2017-02-06 15:08:07 · 921 阅读 · 0 评论 -
Kurento应用开发指南(以Kurento 5.0为模板) 之一:简介,安装与卸载
目录1. Kurento是什么 32. Kurento简介 32.1 WebRTC媒体服务器 32.2 Kurento 媒体服务器 42.3 Kurento API, 客户端和协议 52.4 使用Kurento创建应用程序转载 2017-02-06 14:53:37 · 918 阅读 · 0 评论 -
Coturn配置
这里我们自己搭建一个属于自己stun/turn服务器。此服务器能够成功使用的先决条件即必须使用的一端能够访问到此服务器所在的主机。所以一般情况一定要具备“公网”环境!一般情况下申请的云主机都会提供公网环境,即使像上文那样,主机在NAT之后!好了,确定号网络环境后,开始搭建。首先下载安装包:http://turnserver.open-sys.org/downloads/。这里提供的时所有版转载 2017-02-04 15:54:12 · 6913 阅读 · 1 评论 -
Licode(一):入门介绍
什么是webrtc?WebRTC(Web Real-Time Communication)是一个开源项目(2010年5月,Google以6820万美元收购VoIP软件开发商Global IP Solutions的GIPS引擎,并改为名为“WebRTC”),旨在让Web开发者能够基于Web浏览器轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号转载 2016-12-30 11:18:21 · 21373 阅读 · 1 评论 -
WebRTC VideoEngine综合应用示例(二)——集成OPENH264编解码器
总述WebRTC原生支持VP8和VP9,但也可以自行集成H264编解码器,比较常见的是OPENH264和X264(X264自身只有编码功能,如果要加入解码功能,可以再结合ffmpeg),总体来说,集成H264编解码器的流程和直接使用它们的库的流程类似,但是要先将相应功能依照WebRTC中对编解码器的封装形式重新封装,然后再通过注册外部编解码器的方法在主流程中使用它们。下面先看一下WebRT转载 2016-12-09 13:25:07 · 594 阅读 · 0 评论 -
WebRTC VideoEngine综合应用示例(一)——视频通话的基本流程
WebRTC技术的出现改变了传统即时通信的现状,它是一套开源的旨在建立浏览器端对端的通信标准的技术,支持浏览器平台,使用P2P架构。WebRTC所采用的技术都是当前VoIP先进的技术,如内部所采用的音频引擎是Google收购知名GIPS公司获得的核心技术:视频编解码则采用了VP8。大家都说WebRTC好,是未来的趋势,但是不得不说这个开源项目对新手学习实在是太不友好,光是windows平台下的转载 2016-12-09 13:23:30 · 547 阅读 · 0 评论 -
WebRTC源码分析四:视频模块结构
本文在上篇的基础上介绍WebRTC视频部分的模块结构,以进一步了解其实现框架,只有了解了整体框架结构,对局部算法修改才能够胸有成竹。一、对外接口 对外接口有ViEBase,ViECapture,ViECodec,ViEEncryption,ViEFile,ViEImageProcess,ViENetwork,ViERender和ViERTP_RTCP。主要接口有:1)ViE转载 2016-12-09 13:21:50 · 279 阅读 · 0 评论 -
WebRTC源码分析三:视频处理流程
文本介绍视频的处理流程。图1中显示了两路视频会话视频信号流过程。图1 视频流程示意图以一路视频会话为例,主要分为以下几个线程:1)视频源产生线程:Camera生产视频画面,封装成视频帧,以一定帧率投递到下一个模块。;2)采集线程:由Capturer负责采集视频帧,并对视频帧进行一定处理,如调整画面亮度。并送入各个发送链路的编码模块编码并发送出去;3)接收线程:R转载 2016-12-09 13:20:56 · 268 阅读 · 0 评论 -
WebRTC源码分析二:音频模块结构
本文介绍WebRTC音频模块组成和结构,详细介绍音频引擎的配置和启动,相信看完本文后,很多人可以利用WebRTC完成一个音频通话程序开发。一、对外接口 音频部分的对外主要接口如下,各个接口之间的关系如图1所示。1)VoiceEngine:负责引擎的所有接口查询,存储共享数据信息ShareData。2)VoEBase:负责音频处理的基本操作。3)VoEAudioProc转载 2016-12-09 13:20:10 · 297 阅读 · 0 评论 -
WebRTC源码分析一:音频处理流程
本文概要介绍WebRTC的音频处理流程,见下图:webRTC将音频会话抽象为一个通道Channel,譬如A与B进行音频通话,则A需要建立一个Channel与B进行音频数据传输。上图中有三个Channel,每个Channel包含编解码和RTP/RTCP发送功能。以一个Channel而言,应用程序中将包含三个活动线程,录音线程,音频接收线程和播放线程。1)录音线程:负责麦克风音频的转载 2016-12-09 13:19:14 · 507 阅读 · 0 评论 -
WebRTC代码目录结构
├── ./base //基础平台库,包括线程、锁、socket等├── ./build //编译脚本,gyp├── ./common_audio //基础公共的音频处理│ ├── ./common_audio/include //就一个类型转换头文件│ ├── ./common_audio/resampler //音频重采样代码│ ├── ./comm转载 2016-12-08 19:45:49 · 902 阅读 · 0 评论 -
WebRTC通信流程
WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能。而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能。无论是使用前端JS的WebRTC API接口,还是在WebRTC源码上构建自己的对聊框架,都需要遵循以下执行流程: 上述序列中,WebRTC并不提供Stun服务转载 2016-12-08 15:14:23 · 680 阅读 · 0 评论 -
WebRTC VideoEngine综合应用示例(三)——集成X264编码和ffmpeg解码
总述在前一篇文章中,讲解了如何将OPENH264编解码器集成到WebRTC中,但是OPENH264只能编码baseline的H264视频,而且就编码质量而言,还是X264最好,本文就来讲解一下如何将X264编码器集成到WebRTC中,为了实现解码,同时要用到ffmpeg。总体流程和之前一样,分为重新封装编解码器和注册调用两大步骤,注册调用这一步没有任何不同,主要是重新封装这一步骤有较大区别。转载 2016-12-09 13:26:27 · 379 阅读 · 0 评论 -
WebRTC VoiceEngine综合应用示例(一)——基本结构分析
把自己这两天学习VoiceEngine的成果分享出来,供大家参考,有什么问题也欢迎大家指出,一起学习一起进步。本文将对VoiceEngine的基本结构做一个分析,分析的方法是自底向上的:看一个音频编码器是如何一层层被封装到VoiceEngine中的。首先我们来看一下VoiceEngine的核心API,基本上就在webrtc\voiceengine\include的几个头文件中了。具体来转载 2016-12-09 13:50:45 · 435 阅读 · 0 评论 -
Licode(二):Nuve源码分析
Licode(二):Nuve源码分析Licode的Nove组件旨在对服务端资源进行管理(CRUD),服务端资源包括:会议房间(videoconference rooms)、加入凭证(tokens)、参与用户(User)。Nuve组件的gitHub地址:https://github.com/ging/licode/tree/master/nuve,官方对Nuve的说明如下:Devel转载 2016-12-30 11:16:54 · 7056 阅读 · 0 评论 -
Android之WebRTC介绍
WebRTC被誉为是web长期开源开发的一个新启元,是近年来web开发的最重要创新。WebRTC允许Web开发者在其web应用中添加视频聊天或者点对点数据传输,不需要复杂的代码或者昂贵的配置。目前支持Chrome、Firefox和Opera,后续会支持更多的浏览器,它有能力达到数十亿的设备。然而,WebRTC一直被误解为仅适合于浏览器。事实上,WebRTC最重要的一个特征是允许本地和web转载 2016-12-29 17:43:22 · 658 阅读 · 0 评论 -
licode API (译文)
概览:Api在浏览器中使用,作为一种javascript文件提供使用,可以在你的web应用中直接调用。典型的使用组合:想要连接的房间,使用后端函数,管理本地音视频,客户端事件管理等等。客户端API类列表类名描述Erizo.Stream在LicodeRoom提供本地和远程视频流,音频流和数据流Erizo.Room翻译 2016-12-26 15:38:09 · 3799 阅读 · 0 评论 -
WebRTC中丢包重传NACK实现分析
在WebRTC中,前向纠错(FEC)和丢包重传(NACK)是抵抗网络错误的重要手段。FEC在发送端将数据包添加冗余纠错码,纠错码连同数据包一起发送到接收端;接收端根据纠错码对数据进行检查和纠正。RFC5109[1]定义FEC数据包的格式。NACK则在接收端检测到数据丢包后,发送NACK报文到发送端;发送端根据NACK报文中的序列号,在发送缓冲区找到对应的数据包,重新发送到接收端。NACK需要发送端转载 2016-12-21 15:18:14 · 1416 阅读 · 0 评论 -
WebRTC中RTP/RTCP协议实现分析
一 前言RTP/RTCP协议是流媒体通信的基石。RTP协议定义流媒体数据在互联网上传输的数据包格式,而RTCP协议则负责可靠传输、流量控制和拥塞控制等服务质量保证。在WebRTC项目中,RTP/RTCP模块作为传输模块的一部分,负责对发送端采集到的媒体数据进行进行封包,然后交给上层网络模块发送;在接收端RTP/RTCP模块收到上层模块的数据包后,进行解包操作,最后把负载发送到解码模块。转载 2016-12-21 15:01:13 · 863 阅读 · 0 评论 -
WebRTC Native APIs
The WebRTC Native APIs implementation is based on W3C’s WebRTC 1.0: Real-time Communication Between Browsers.The code that implements WebRTC Native APIs (including the Stream and PeerConnection AP转载 2016-12-21 12:19:00 · 606 阅读 · 0 评论 -
WebRtc 音频引擎-linux demo
Google收购了著名的音频技术公司GIPS后,基于其强大的音频技术,实现了WebRtc的Voice Engine,即语音处理引擎。本文主要介绍WebRTC 中Voice Engine中音频技术相关的实现,并结合具体实例,介绍如何利用voice engine实现自己的VoIP音频处理引擎。本文主要介绍如何在linux下搭建一个可以自己调试的基于WebRTC的voiceEngine。转载 2016-12-09 14:25:25 · 985 阅读 · 0 评论 -
WebRTC VoiceEngine综合应用示例(二)——音频通话的基本流程
下面将以实现一个音频通话功能为示例详细介绍VoiceEngine的使用,在文末将附上相应源码的下载地址。这里参考的是voiceengine\voe_cmd_test。第一步是创建VoiceEngine和相关的sub-apis[cpp] view plain copy // // Create VoiceEngine relate转载 2016-12-09 13:50:46 · 432 阅读 · 0 评论