crtmpserver通常使用基本类演示
以前我们做了分析过程,这一次,我们都参与了类做梳子,两个可以一起关注一下一起合并,整个方案的实施是有帮助。
BaseClientApplication APP基类,一切APP都基于这个类
StreamsManager _streamsManager;
能够对该APP所属的流链接进行管理
map<uint64_t, BaseAppProtocolHandler *> _protocolsHandlers;
这个APP所支持的协议
BaseProtocol 协议基类,一切协议都基于这个类,比如BaseHTTPProtocol和BaseRTMPProtocol
BaseClientApplication *_pApplication;
该协议所属的APP
BaseProtocol *_pFarProtocol;
远端协议
BaseProtocol *_pNearProtocol;
//表示到服务器的远近[outside world --->ssl--->http--->rtmp--->server]
//离server近期的是rtmp协议,最远的为ssl
BaseRTMPProtocol RTMP协议运算基类
IOBuffer _outputBuffer;
协议的交互buffer
BaseRTMPAppProtocolHandler *_pProtocolHandler;
所属的协议事务类
BaseStream *_streams[MAX_STREAMS_COUNT]; 这边是一个连接对象同意请求256次流?
LinkedListNode<BaseOutNetRTMPStream *> *_pSignaledRTMPOutNetStream;
输出流集合
BaseAppProtocolHandler APP处理协议事务基类,--->BaseRTMPAppProtocolHandler--->RTMPAppProtocolHandler
BaseClientApplication *_pApplication;
能够找到所属的APP
对于主要的协议交互,BaseRTMPAppProtocolHandler已经足够使用。继承于它的RTMPAppProtocolHandler仅仅只是添加一些特定的扩展应用。同理,BaseRTSPAppProtocolHandler,对于比較简单的协议比方ssl和http。大部分功能都在BaseAppProtocolHandler,仅仅须要重载实现部分接口就能够了。而对于调用者来说。构造一个RTMPAppProtocolHandler和HTTPAppProtocolHandler就可以支持两种协议的事务处理
BaseRTMPAppProtocolHandler 继承于BaseAppProtocolHandler
map<uint32_t, BaseRTMPProtocol *> _connections;
协议基础类的支持?
StreamsManager 流链接管理
BaseClientApplication *_pApplication;
所属APP
BaseStream 流处理基类
BaseProtocol *_pProtocol;
所属协议
StreamsManager *_pStreamsManager;
反向查询流管理
BaseInStream --->BaseStream 流输入类
map<uint32_t, BaseOutStream *> _linkedStreams;
相应的流输出集合
BaseOutStream --->BaseStream 流输出类
BaseInStream *_pInStream;
流的输入对象
InNetRTMPStream --->BaseInNetStream --->BaseInStream
RTMP 流公布时创建的,用于管理流输入,在这个类中做流分发处理
IOBuffer _videoCodecInit;
相应的视频流缓冲
IOBuffer _audioCodecInit;
相应的音频流缓冲
IOHandler 处理IO交互,网络相关,TCPAcceptor,TCPCarrier,TCPConnector...
BaseProtocol *_pProtocol;
所属的交互协议。RTMP/HTTP/RTSP...
IOHandlerType _type;
标识本IO的处理类型,參见IOHandlerType,ACCEPT/CONNECT/TCP/UDP
TCPAcceptor TCP监听器
BaseClientApplication *_pApplication;
IOHandlerManager IO交互管理,程序入口为这个类
static map<uint32_t, IOHandler *> _activeIOHandlers;
有效IO
static map<uint32_t, IOHandler *> _deadIOHandlers;
无效IO
ProtocolManager Protocol协议交互管理
ClientApplicationManager APP管理
ProtocolFactoryManager 协议厂,这个计划包括支持协议,外观似无关的配置文件。有着25协议
版权声明:本文博主原创文章。博客,未经同意不得转载。
crtmpserver通常使用基本类演示的更多相关文章
- Scala编程--基本类型和操作
如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...
- Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换(Wrapper类)
基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱 ...
- [转]javascript中基本类型和引用类型的区别分析
基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段:引用类型值指由多个值构成的对象.当我们把变量赋值给一个变量时,解析器首先要做的就是确 ...
- 利用crtmpserver搭建rtmp服务器
Google + 实践:最终直播成功. 记录一下. 这样.兴许就能够对代码进行改造,利用开源码实现:Android平台下.搭建rtmpserver.浏览器端利用flash播放视频. 代码架构为:ffm ...
- javascript中基本类型和引用类型的区别分析
大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引 ...
- Visaul Studio 常用快捷键的动画演示
从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...
- 免费的精品: Productivity Power Tools 动画演示
Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...
- Html5 快速排序演示
快速排序(Quicksort)是对冒泡排序的一种改进.快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另 ...
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
随机推荐
- 配置squid代理服务
1. 简述一下squid的用途?squid可以做代理和缓存服务器,而做代理时,可以分为正向代理和反向代理.正向代理用在企业办公环境中,企业员工上网通过代理来上网,代理的缓存功能可以为企业节省宝贵的带宽 ...
- 整理:C#写ActiveX, 从代码到打包到签名到发布的示例
对于不懂C++和VB的我, 在工作上却遇到需要重写旧ActiveX控件的任务. 好在客户机都是Windows PC, 基本上都有.net framework 2.0, 勉强用C#实现可以满足需求 所以 ...
- ado.net 数据库连接的两方式种
DataAdapter: string connectionString = "data source=127.0.0.1;Database=dong;user id=sa;password ...
- SQlserver表连接
连接是两元运算,可以对两个或多个表进行查询,结果通常是含有参加连接运算的两个表或多个表的指定列的表. 在T-SQL中,连接查询有两类: 第一类:符合SQL标准的连接谓词表示形式: 第二类:T-SQL扩 ...
- SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...
- apt-get install jdk
怕忘记,记录下: sudo apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/jav ...
- Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二)
介绍完FTP协议后,来看看该软件完成后的效果图 客户端的主界面如上图所示,主要是分为以下几个界面: 数据输入界面:用来让用户输入服务器的地址,用户名,密码,端口号等. 站点菜单.本地菜单.远程菜单以及 ...
- canvas制作简单动画
在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...
- JS/CSS/IMG加载顺序关系之DOMContentLoaded事件
DOMContentLoaded介绍 DOMContentLoaded事件的触发条件是: 将会在“所有的DOM全部加载完毕并且JS加载执行后触发”. 但如果“js是通过动态加载进来的话,是不会影响到D ...
- javaScript中将时间戳转换成日期格式
function DateFormt(time, format) { ); var o = { , "d+": testDate.getDate(), "h+" ...