(五)WebRTC手记Channel概念】的更多相关文章

转自:http://www.cnblogs.com/fangkm/p/4401075.html 前面两篇博文完整地介绍了WebRTC音视频的采集模块,接下来应该开始介绍关键的音视频编码模块.不过在介绍音视频编码模块之前,需要介绍一下Channel概念,WebRTC的每路数据的传输流程都封装成一个Channel对象.详细UML图如下: MediaChannel及其派生类封装了待传输的编解码.RTP/RTCP封包解包等逻辑,具体对象由相应的Media Engine类创建,如图:视频Channel最终…
转载请注明出处:http://www.cnblogs.com/fangkm/p/4401075.html 前面两篇博文完整地介绍了WebRTC音视频的采集模块,接下来应该开始介绍关键的音视频编码模块.不过在介绍音视频编码模块之前,需要介绍一下Channel概念,WebRTC的每路数据的传输流程都封装成一个Channel对象.详细UML图如下: MediaChannel及其派生类封装了待传输的编解码.RTP/RTCP封包解包等逻辑,具体对象由相应的Media Engine类创建,如图:视频Chan…
转自:http://www.cnblogs.com/fangkm/p/4401143.html 终于讲到视频数据的编码发送模块了,不容易.总体来说也看了不少时间WebRTC的源码了,最大的感触就是各个模块在开发的时候非常独立,每个模块都定义了自己的一套接口,最后串起来的时候添加各种适配对象来转接.这给我们这些刚开始源码阅读的人带来非常大的苦恼,不过WebRTC的模块内的结构设计还是很不错的,不然我也没有看下去的动力. 注意命名,WebRtcVideoEngine2带了个2字,不用想,这肯定是个升…
转载请注明出处:http://www.cnblogs.com/fangkm/p/4401143.html 终于讲到视频数据的编码发送模块了,不容易.总体来说也看了不少时间WebRTC的源码了,最大的感触就是各个模块在开发的时候非常独立,每个模块都定义了自己的一套接口,最后串起来的时候添加各种适配对象来转接.这给我们这些刚开始源码阅读的人带来非常大的苦恼,不过WebRTC的模块内的结构设计还是很不错的,不然我也没有看下去的动力. 注意命名,WebRtcVideoEngine2带了个2字,不用想,这…
在学习WebRTC的时候,接触到了好多新的概念,在这里做一下备忘吧 RTMP协议 Real Time Messaging Protocol(实时消息传输协议).该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种.RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信. RTMP协议(Real Time Messaging Protocol)是被Flash用于对…
转载请注明出处:http://www.cnblogs.com/fangkm/p/4364553.html WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能.而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能.无论是使用前端JS的WebRTC API接口,还是在WebRTC源码上构建自己的对聊框架,都需要遵循以下执行流程: 上述序列中,WebRTC并不提供Stun服务器和Sig…
转自:http://www.cnblogs.com/fangkm/p/4374668.html 上一篇博文介绍了本地视频采集,这一篇就介绍下音频采集流程,也是先介绍WebRTC原生的音频采集,再介绍Chromium源码对它的定制. 1. WebRTC原生音频采集 先介绍一下WebRTC中与音频采集貌似相关的接口概念: 结构上看起来是不是和视频Track的结构类似?不过前面提过,如果你以对称的思维,在此结构中找出与视频track相似的采集源和输出源,那就肯定无功而返了,LocalAudioSour…
转自:http://www.cnblogs.com/fangkm/p/4364553.html WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能.而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能.无论是使用前端JS的WebRTC API接口,还是在WebRTC源码上构建自己的对聊框架,都需要遵循以下执行流程: 上述序列中,WebRTC并不提供Stun服务器和Signal服务…
转自:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由于篇幅较大,视频采集和音频采集分成两篇博文,这里先分析视频采集流程.分析的时候先分析WebRTC原生的视频采集流程,再捎带提一下Chromium对WebRTC视频采集的适配,这样能更好地理解WebRTC的接口设计. 1. WebRTC原生视频采集 在介绍视频设备的采集之前,首先要分析一下WebRTC的Devi…
转自:http://www.cnblogs.com/fangkm/p/4370492.html 转载请注明出处:http://www.cnblogs.com/fangkm/p/4370492.html 上一篇文章简单地介绍了下WebRTC的协议流程,这一篇就开始介绍框架与接口. 一提到框架,本能地不知道从什么地方入手了.曾经直接从Chromium项目对WebRTC的源码的集成方面入手,后来发现这个步子迈的太大了,看的越多,概念越混乱,看了半个月感觉也没啥沉淀.还是从WebRTC提供的示例工程pe…
转载请注明出处:http://www.cnblogs.com/fangkm/p/4374668.html 上一篇博文介绍了本地视频采集,这一篇就介绍下音频采集流程,也是先介绍WebRTC原生的音频采集,再介绍Chromium源码对它的定制. 1. WebRTC原生音频采集 先介绍一下WebRTC中与音频采集貌似相关的接口概念: 结构上看起来是不是和视频Track的结构类似?不过前面提过,如果你以对称的思维,在此结构中找出与视频track相似的采集源和输出源,那就肯定无功而返了,LocalAudi…
转载请注明出处:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由于篇幅较大,视频采集和音频采集分成两篇博文,这里先分析视频采集流程.分析的时候先分析WebRTC原生的视频采集流程,再捎带提一下Chromium对WebRTC视频采集的适配,这样能更好地理解WebRTC的接口设计. 1. WebRTC原生视频采集 在介绍视频设备的采集之前,首先要分析一下WebRTC…
转载请注明出处:http://www.cnblogs.com/fangkm/p/4370492.html 上一篇文章简单地介绍了下WebRTC的协议流程,这一篇就开始介绍框架与接口. 一提到框架,本能地不知道从什么地方入手了.曾经直接从Chromium项目对WebRTC的源码的集成方面入手,后来发现这个步子迈的太大了,看的越多,概念越混乱,看了半个月感觉也没啥沉淀.还是从WebRTC提供的示例工程peerconnection_client入手比较轻便.先抛开音视频流的构建和渲染流程,示例工程核心…
第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处理 5:使用第三方框架的良好整合 理解:控制反转:也称依赖注入,是面向切面编程中的一种设计理念,用来降低程序之间的代码耦合度的. 什么是依赖:在代码中一般指通过局部变量,方法参数,返回值等建立的对于其他对象的调用关系. 二:理解面向切面编程: 1面向切面编程(aop)是软件编程思想发展到一定阶段产物…
先看一段代码 var foo = {} foo.a = null alert(foo.a == null)     //true alert(foo.a === undefined)  //false alert(foo.b == null)     //true alert(foo.b === null)   //false 直观上来看,foo.a 是 null, foo.b 是undefined,所以null == undefined 为true,null === undefined  为f…
转载请把头部出处链接和尾部二维码一起转载,本文出自: http://blog.csdn.net/hejjunlin/article/details/52431887 上篇中介绍了MediaPlayer从prepare到playback的其他过程,但是很多的一些音视频的基础概念可能还不是很清楚,今天将介绍下对于多媒体开发时,常常有一些基本概念.看下今天的Agenda: 对杂而乱的概念进行归类 视频部分相关 音频部分相关 先看一张图,这样常常在说的,是否真的了解它们真实含义: 对杂而乱的概念进行归类…
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>05-继承的概念</title> <script> /* function Dog (color,name){ this.skinColor = color; this.name = name; this.act = function (){ con…
<?php header("Content-Type:text/html;charset=utf-8"); //字符串概念: //1.单引号.//里面的变量不会被解释 //例: /*$a=77; $b='美丽 $a 中国'; echo $b;*/ //输出:美丽 $a 中国 //2.双引号. //里面的变量会被解释 //例: /*$a=22; $c="中 $a 国"; echo $c;*/ //输出:中 22 国 //3.Heredo结构.//里面的变量会被解…
NIO流与IO流的区别 面向流与面向块 IO流是每次处理一个或多个字节,效率很慢(字符流处理的也是字节,只是对字节进行编码和解码处理). NIO流是以数据块为单位来处理,缓冲区就是用于读写的数据块.缓冲区的IO操作是由底层操作系统实现的,效率很快. 阻塞式与非阻塞式 IO流是阻塞式的,使用read()与write()方法时,执行期间只能等待该方法完成. NIO流是非阻塞式的,执行读写时依然可以做别的事情,不会阻塞线程,提高资源利用率,NIO流的Selector就是非阻塞式的. NIO加入了Sel…
我们知道maven能帮我们管理jar包,那么它是怎么管理的呢?这篇博客我们来详细介绍. 1.什么是坐标? ①.数学中的坐标 在平面上,使用 X .Y 两个向量可以唯一的定位平面中的任何一个点 在空间中,使用 X.Y.Z 三个向量可以唯一的定位空间中的任意一个点 ②.Maven 中的坐标 俗称 gav:使用下面三个向量子仓库中唯一定位一个 Maven 工程 在项目中的 pom.xml 文件中,我们可以看到下面gav的定义: 1.groupid:公司或组织域名倒序 <groupid>com.ys.…
1.Redis 默认有16384 solts(槽),每个槽可以存储多个hash值. 2.Redis 默认不需要密码: 2.1 注释去掉,设置自己的密码 3.设置密码后需要通过 3.1 -h 主机ip 3.2 -p 端口 3.3 -a 密码 ./redis-cli -h 192.168.139.132 -p 6379 -a smallming…
>>修饰符的访问权限 private : 私有成员, 在类的内部才可以访问. protected: 保护成员,该类内部和继承类中可以访问. public: 公共成员,完全公开,没有访问限制. internal:在同一命名空间内可以访问. >>装箱与拆箱 从值类型接口转换到引用类型即为装箱. 从引用类型转换到值类型则为拆箱 只有值类型可以装箱,拆的就是装箱后的引用对象,箱子就是一个存放了值类型字段的引用对象实例. 箱子存储在托管堆上.只有值类型才有装箱.拆箱两个状态,而引用类型一直都…
 5.1.1 企业级应用开发    企业级应用是指那些为商业组织,大型企业而创建部署的解决方案及应用,大型企业级应用的结构复杂,涉及的外部资源众多,事务密集,数据规模大,用户数量多,有较强的安全性考虑和较高的性能要求 Spring是企业应用开发的 一站式 选择 Spring贯穿表现层,业务层,持久层.   5.1.2 Spring的 绿草丛 Spring是一个轻量级框架,大大简化了Java企业级开发,提供了强大,稳定的功能. Spring有两个主要目标:一是让现有技术更易于使用,二是促进良好的编…
WEBRTC RTP/RTCP协议族 2017-02-22 20:15 阅读(144) 评论(0) WebRTC 基于GCC的拥塞控制(下) 2017-02-22 15:44 阅读(108) 评论(0) WebRTC 基于GCC的拥塞控制(上) 2017-02-22 11:37 阅读(65) 评论(0) WebRTC 视频接收缓冲区基于KalmanFilter的延迟模型 2017-02-22 11:25 阅读(122) 评论(0) WebRTC 拥塞控制技术 2017-02-22 11:04 阅…
cdsn博客不支持word文件,所以这里显示不完全.可到本人资源中下载word文档: v0.3:http://download.csdn.net/detail/kl222/6961491 v0.1:http://download.csdn.net/detail/kl222/6677635  下载完后评论,可以返还你的积分.此文档还在完善中,欢迎大家交流,共同完善.    Webrtc  教程 版本0.3(2014年2月) 康林 (16614119@qq.com) 本文博客地址:http://bl…
你好,我是彤哥,本篇是netty系列的第五篇. 简介 上一章我们一起学习了如何使用Java原生NIO实现群聊系统,这章我们一起来看看Java NIO的核心组件之一--Channel. 思维转变 首先,我想说的最重要的一个点是,学习NIO思维一定要从BIO那种一个连接一个线程的模式转变成多个连接(Channel)共用一个线程来处理的这种思维. 1个Connection = 1个Socket = 1个Channel,这几个概念可以看作是等价的,都表示一个连接,只不过是用在不同的场景中. 如果单从阻塞…
[从源码学设计] Flume 之 memory channel 目录 [从源码学设计] Flume 之 memory channel 0x00 摘要 0x01 业务范畴 1.1 用途和特点 1.2 Channel 1.3 研究重点 1.4 实际能够学到什么 1.5 总述 0x02 定义 2.1 接口 2.2 配置参数 2.2.1 channel属性 2.4 Semaphore和Queue 2.5 MemoryTransaction 0x03 使用 3.1 channel如何使用 3.2 sour…
前言: 初识go语言不到半年,我是一次偶然的机会认识了golang这门语言,看到他简洁的语法风格和强大的语言特性,瞬间有了学习他的兴趣.我是很看好go这样的语言的,一方面因为他有谷歌主推,另一方面他确实有用武之地,高并发就是他的长处.现在的国内完全使用go开发的项目还不是很多,从这个上面可以看到:链接https://github.com/qiniu/go/issues/15,据我了解七牛云存储应该是第一个完全使用go开发的大型项目,其中七牛云的CEO许世伟是公认的go专家,同时也是<go语言编程…
本文翻译自WebRTC data channels 在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩展成多个数据中心.这种情况下很容易出现很高的延迟,同时难以保证数据的私密性. 这些问题可以通过WebRTC提供的RTCDataChannel API来解决,他能直接在点对点之间传输数据.这篇文章将介绍如何创建并使用数据通道,并提供了一些网络上常见的用例 为了充分理解这篇文章,你可能需要去了解一些RTCP…
转自: http://www.lxway.com/566299526.htm 最新要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器)实现.NAT传输支持stun server.2)优缺点:NAT方面只支持STUN,无ICE框架,如需要完全实现P2P视频通话需要实现符合ICE标准的客户端,音频方…