red5源码分析
二侠
这个作者很懒,什么都没留下…
展开
-
red5源码分析---8
red5源码分析—服务器处理createStream命令服务器接到createStream命令后,经过过滤器层层处理,最后会调用BaseRTMPHandler的messageReceived函数, public void messageReceived(RTMPConnection conn, Packet packet) throws Exception { if (conn原创 2016-05-10 14:59:20 · 1687 阅读 · 0 评论 -
red5源码分析---4
red5源码分析—服务器端握手上一节分析了red5客户端握手的过程,这一节开始分析red5服务器端握手的过程。 和客户端的分析类似,在red5服务器端TCP连接建立后,会调用sessionCreated函数,在该函数中会注册RTMPEIoFilter过滤器,TCP连接建立后,所有的消息就会经过该过滤器,握手的消息也不例外,下面就来看该过滤器的messageReceived函数, public原创 2016-05-04 15:51:20 · 1249 阅读 · 0 评论 -
red5源码分析---3
red5源码分析—客户端握手从《red5源码分析—1》中可知,客户端会在RTMPMinaIoHandler的sessionOpened函数中向服务器发送第一次握手请求,即TCP连接建立好了,就开始建立RTMP连接了。原创 2016-05-04 15:17:34 · 1579 阅读 · 0 评论 -
red5源码分析---2
red5源码分析—服务器连接red5服务器端也采用了mina框架进行底层Socket的封装。red5使用Spring管理相关的bean,下面简单说明一下red5 standalone的启动流程。 main函数在org.red5.server.Bootstrap中,该类加载org.red5.server.Launcher,Launcher通过Spring解析red5.xml文件,red5.xml文件原创 2016-04-21 21:31:19 · 2341 阅读 · 0 评论 -
red5源码分析---1
red5源码分析---1原创 2016-04-21 20:08:49 · 3957 阅读 · 1 评论 -
red5源码分析---6
red5源码分析—客户端和服务器的命令处理在《red5源码分析—5》中可以知道,在RTMP握手完毕后,客户端会向服务器发送connect命令,connect命令的主要作用就是要和red5服务器上的某个Scope相连接,连接完成后,会向客户端发送带宽协调的指令,ping指令,和一个带宽检测指令。下面先分析ping指令。ping指令服务端代码这里先贴一下在服务器将客户端和某个Scope相连后发出的pin原创 2016-05-06 22:11:36 · 4626 阅读 · 0 评论 -
red5源码分析---13
red5源码分析—play命令分析本章开始分析play命令,先来看客户端的代码,定义在BaseRTMPClientHandler中, public void play(Number streamId, String name, int start, int length) { if (conn != null) { int channel = getCh原创 2016-05-17 22:11:34 · 1522 阅读 · 0 评论 -
red5源码分析---12
red5源码分析—服务器处理视频数据接着《red5源码分析—11》,本章假设客户端发来的是视频数据,下面就分析服务器如何处理这些数据的。 根据前面几章的分析,基于mina框架,数据到达服务器后,最终会到达RTMPHandler的messageReceived函数,messageReceived定义在RTMPHandler的父类BaseRTMPHandler中, public voi原创 2016-05-17 11:21:25 · 7084 阅读 · 0 评论 -
red5源码分析---11
red5源码分析—客户端处理onStatus命令并向服务器发送数据在《red5源码分析—10》中提到过,red5服务器在处理publish命令后,会在创建的ClientBroadcastStream中调用startPublishing函数,进而通过sendStatus将onStatus命令发送给客户端。 和前面几章的分析类似,客户端在收到onStatus命令后,最终会调用到BaseRTMPC原创 2016-05-12 18:19:45 · 1159 阅读 · 0 评论 -
red5源码分析---10
red5源码分析—服务器处理publish命令和前几章的分析一样,服务器接收到客户端发来的publish命令后,最终会执行RTMPHandler的onCommand函数,再参考《red5源码分析—8》的分析,最终会调用StreamService的publish方法,代码如下 public void publish(String name, String mode) {原创 2016-05-12 00:00:24 · 8508 阅读 · 0 评论 -
red5源码分析---7
red5源码分析—客户端处理connect命令在《red5源码分析—5》中提到过,当客户端发送connect命令后,服务器经过处理会将其connect命令返回,不同的是服务器返回的结果包含了一些连接后需要发送给客户端的信息,包括服务器版本、模式等等。 该命令到达服务器后依然会调用BaseRTMPClientHandler的onCommand函数,如下 protected void原创 2016-05-10 11:18:11 · 1659 阅读 · 0 评论 -
red5源码分析---9
red5源码分析—客户端publish流接着上一章的分析结果,参考《red5源码分析—7》的分析结论,当服务器返回steamId后,客户端会执行BaseRTMPClientHandler的onCommand函数,onCommand函数会根据返回的方法名”_result”开始执行handlePendingCallResult函数,handlePendingCallResult会获取之前注册的回调函数,原创 2016-05-10 16:58:15 · 1873 阅读 · 0 评论 -
red5源码分析---5
red5源码分析—服务器接收connect命令在前两章《red5源码分析—3》中提到,在red5客户端与服务器握手期间,当red5客户端接收到服务器发送过来的S2信息后,会向服务器发送”connect”命令,为了方便分析,这里再贴一下这部分代码, public void connectionOpened(RTMPConnection conn) { Channel原创 2016-05-06 16:10:19 · 2278 阅读 · 0 评论