red5源码学习
whycold
这个作者很懒,什么都没留下…
展开
-
Red5源代码分析 - 关键类及其初始化过程
<br /><br />Red5如何响应rmpt的请求,中间涉及哪些关键类?<br />响应请求的流程如下:<br />1.Red5在启动时会调用RTMPMinaTransport的start()方法,该方法会开启rmtp的socket监听端口(默认是1935),然后使用mina(apache的io操作类库)的api将RTMPMinaIoHandler绑定到该端口。<br />2.RTMPMinaIoHandler上定义了messageReceived、messageSent、sessionOpened和s转载 2010-12-05 20:13:00 · 3040 阅读 · 2 评论 -
Red5源码研究二-RTMP规范(握手)
在RTMP客户端和服务器端网络层连接成功之后,第一件事情就是RTMP的握手。至于为什么要握手,协议本身没有太多的描述,我只能通过协议的内容来描述一下我理解的握手目的:从握手这个词出发,握手的主要目的就是让客户端和服务器端互相打个招呼,其主要内容应该包括看看两者是否同时理解RTMP协议本身(至少理解握手啊,呵呵)以及对RTMP协议版本的进行一个互认;至于是否理解RTMP协议本身的解决方案就是制造一些RTMP特有的数据和要求在客户端和服务器端来回折腾几次,如果折腾得顺利就算完事,不顺利,那就断绝关系吧!告诉协议转载 2010-12-05 20:28:00 · 3189 阅读 · 1 评论 -
Red5源码研究一
Red5源码研究一2010-08-30 01:311. RED5和APACHE MINARed5采用的网络编程框架是Apache Mina。所以源码研究的思路可以有:1) 从Mina的角度进行请求处理流的研究。2) 从Red5整体管理角度进行Red5的应用框架研究。3) 从一些核心的处理环节进行研究,例如编解码、录制、回放和直播。2. 从MINA的角度看RED5的请求处理流(仅仅分析RTMP)2.1. 建立基于MINA的网络监听上面完全是Mina的网络特性,就是建立网络监转载 2010-12-05 20:20:00 · 3888 阅读 · 0 评论 -
Red5源码研究二-RTMP规范(传输层Chunk Stream Protocol)
Chunk的目的就是在RTMP传输层将消息截成可传输的数据包,所以一个Chunk应该能够体现属于哪个逻辑流(传输层面的通道,与后面我们谈到的Message Stream ID表示的通道是两个概念,可以用于负载均衡等)、重新组装时的顺序和具体的数据信息。每个Chunk由数据头和数据组成,其中数据头由Basic Header、Chunk Msg Header和Extended Time Stamp组成,这里相对复杂的是Chunk的头是可变长度的,其可变的初衷是为了进行数据压缩,其实大家觉得压缩10几个字节好像没转载 2010-12-05 20:27:00 · 2000 阅读 · 0 评论 -
Red5源码研究二-RTMP规范(协议栈)
RTMP的简单架构如下图:RTMP的协议栈整体上可以分为三层:传输层(即所谓的Chunk);消息层(即所谓的Message);应用层(即所谓的Message Command)。其实我们知道RTMP协议最常用的是音视频的点播、录制和广播(Flash中我们叫NetStream);远程调用(Flash中我们叫作SharedObject或者NetStream)。对于音视频来说,一帧封装一个消息的话我们都不能保证其大小是否超过具体传输协议的最大包限制,同时所谓多通道复用和实时性要求对消息块能够较灵活地切分,所以RTM转载 2010-12-05 20:29:00 · 1989 阅读 · 0 评论 -
还是源码来的直接---读mina源码
转载请注明出处http://chillwarmoon.javaeye.com 多好的文档也不如源码来的直接。如果自己的程序对于某种技术过于依赖,有时候仅看那么几页的文档,总是感觉放心不下。还是看看源码,多多理解内部的实现机制为好。 一 读源码时,首先要弄清楚代码所涉及到的重要模型及其之间的关系,从整体架构方面理解其组成。 1.对于IOService的实现NioSocketConnector和NioSocketAcceptor来说,都持有selector的引用,本身都有一个固定的线程池execu转载 2010-12-18 21:40:00 · 794 阅读 · 0 评论 -
Apache MINA JMX整合
<br /><br />JMX用于管理和监控Java应用,这个指南会提供一个例子来说明如何在基于MINA的应用中使用JMX。<br />这个指南用于说明如果将JMX技术整合到基于MINA的应用中,在这里,将会整合MINA-JMX类到HTTP服务器例程中。<br />版本:本指南使用的MINA版本在1.0以上。<br />1 增加一个服务管理MBean<br />example/src/main/java/org/apache/mina/example/httpserver/codec/Server.java转载 2010-12-19 21:35:00 · 2511 阅读 · 0 评论 -
Apache MINA框架简述[转]
<br /><br />1。MINA 框架简介<br />当客户首次访问采用MINA编写的程序时,IoAcceptor作为线程运行,负责接受来自客户的请求。当有客户请求连接时,创建一个Session,该Session与IoProcessor、SocketChannel以及IOService联系起来。IoProcessor也作为另外一个线程运行,定时检查客户是否有数据到来,并对客户请求进行处理,依次调用在IOService注册的各个IoFilter,最后调用IoHandler进行最终的逻辑处理,再将处理后的结原创 2010-12-19 19:33:00 · 784 阅读 · 0 评论 -
Apache MINA 从1.x到2.x的一些改变
<br /><br />在Apache MINA 2.x中提供了新的API,并且有一部分不能向前兼容,这主要是一些处理复杂的部分,这里只介绍一下不兼容的内容,因为大部分还是兼容的。<br />1 ThreadModel已经被移除<br />ThreadModel最初是为了简化应用预定义的线程模型到IoService的处理的。然而,配置线程模型因为简单而引入很多构造来,这样其产生的混乱多于其易用性了,所以移除。<br />2 IoService配置简化<br />在1.x中,IoService以及其子接口转载 2010-12-19 21:36:00 · 1180 阅读 · 0 评论