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中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
随机推荐
- android离线下载的相关知识
离线下载的功能点如下: 1.下载管理(开始.取消下载). 2.网络判断(Wi-Fi,3G). 3.独立进程. 4.定时和手机催醒. 5.自启动. 选择 ...
- C#去除byte数组头尾杂质(即不需要的数据)
代码如下: /// <summary> /// 去除byte数组头尾杂质(即不需要的数据) /// </summary> /// <param name="ar ...
- linux生成随机密码
通常情况下大家生成密码都好困惑,一来复杂程度不够会不安全,复杂程度够了又不能手动随便敲击键盘打出一同字符(但通常情况下这些字符是有规律的), 使用1password 或者 keepass 这种软件生成 ...
- 图形绘制 Canvas Paint Path 详解
图形绘制简介 Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...
- less样式表
LESS是一种由Alexis Sellier设计的动态层叠样式表语言.受Sass所影响,同时也影响了Sass的新语法:SCSS.[2] LESS是开源的,其第一个版本由Ruby写成,但在后续的版本当 ...
- .NET Core初体验 - 在Mac下运行第一个Web示例程序
要说最近两天程序猿之间最喜欢吹水的事是什么?那绝壁是甲骨文要放弃Java!简直做梦都要笑醒!由于公司的产品线全面转向Java,最近几个月也一直在苦学Java技术.已经默默决定了,如果消息证实是真的,我 ...
- Codeforces Round #276 (Div. 1)
a. 给俩数, 求他俩之间二进制数中1最多的,有多个输出最小的: 贪心,从小到大加能加就加,最后可能碰到一个不能加了但是当前数比l小,那么就加上这个数,然后从大到小,能减就减,见到符合条件 #incl ...
- 自己写的简单的jQuery分页控件
因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...
- math.h中的常量
类似于Matlab中经常用到的一些常量,C++里边也是有的.(经查源文件无意中看到) 写入如下代码: #include<iostream> #include<iomanip> ...
- PHP扩展开发(3)-config.m4
1. 宏命令 1.1. dnl 注释 1.2. 扩展的工作方式 1.2.1) PHP_ARG_WITH不需要第三方库 1.2.2) PHP_ARG_E ...