Red5空项目的理解

在经过三天的苦恼之后,我终于对Red5的工作流程有点了解了。这样一来对要做的项目总算不会太瞎了。出于个人感受,认为下面所讲述的内容对初学者理解Red5以及基于Red5开发有很大的帮助,因此记录下来。

注:以下内容均为个人理解,没有严格的证明过程。若有机会补上。

  • 要点一

首先Red5有几个大组件:red5-service、red5-io、red5-server-common、red5-server。这四个组件与其所依赖的第三方jar文件,共同提供了两个基础服务。分别是:

  1. 基于RTMP的传输服务:基于mina、spring等实现。
  2. 基于HTTP的Web服务:基于Tomcat实现。

我们使用Red5-eclipse-plugin所创建的项目都是在上述的两种服务之上的。

首先,我们的项目需要指定一个Handler。这个Handler通过spring注入到RTMP服务的代码中,会在适当的实际被回调。例如RTMP握手成功之后将会回调这个Handler的connect方法,表示客户端已经连接上来了。Handler的类型肯定是固定的。

其次,我们的项目是Dynamic Web Project,肯定是基于tomcat的。这也是为什么有WEB-INF等目录。这些与Web项目相关的资源、class文件等,会被打包到Red5中Tomcat所指定的目录,即webapps下,用于被浏览器访问。

  • 要点二

对于向我这种用惯SDK、API的开发者,会错误的以为Red5只是提供了RTMP的接口,类时libRTMP。其实不然,Red5其实一直是一个独立的应用程序,仅仅是这个程序开放了回调接口。我们不是向libRTMP那样控制整个处理流程,而是在RTMP的服务流程中插入我们的逻辑代码。这个观点也困惑了我一两天,太瞎了。

  • 结论

基于上述两个要点,我们自己创建的Red5空项目,运行起来就已经具备了处理RTMP和Web请求的能力。在我的PC上,当我用http://localhost:5080/Red5Demo访问我的项目时,访问的是Tomcat提供的内容;当我用rtmp://localhost/Red5Demo访问,则请求数据走的是RTMP协议组成的通道。

接下来,如果要定制我们的处理逻辑,只要在我们项目的Handler所在的Java文件中添加代码就可以了。

  • 测试

下面是我的的例子,配置如下:

  1. 通过插件新建项目,名称为Red5Demo。
  2. 使用IPCamera,内置自己写的RTMP客户端,通过rtmp://Server_PC‘sIP/Re5Demo上传数据到Red5,并设置名称为helloworld。
  3. 使用Adobe的Flash客户端,同样连接rtmp://Server_PC‘sIP/Re5Demo,指定播放helloworld音视频流。

这个例子验证了Red5空项目已经支持RTMP传输的观点。

哈哈哈哈,有点白痴,别喷。

时间: 2024-10-28 20:19:48

Red5空项目的理解的相关文章

对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(4)

chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angularjs文章:http://chsakell.com/2015/08/23/building-single-page-applications-using-web-api-and-angularjs-free-e-book/ 这里记录下对此项目的理解.分为如下几篇: ● 对一个前端使用AngularJ

对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)

chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angularjs文章:http://chsakell.com/2015/08/23/building-single-page-applications-using-web-api-and-angularjs-free-e-book/ 这里记录下对此项目的理解.分为如下几篇: ● 对一个前端使用AngularJ

对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(1)

chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angularjs文章:http://chsakell.com/2015/08/23/building-single-page-applications-using-web-api-and-angularjs-free-e-book/ 这里记录下对此项目的理解.分为如下几篇: ● 对一个前端使用AngularJ

对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)

chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angularjs文章:http://chsakell.com/2015/08/23/building-single-page-applications-using-web-api-and-angularjs-free-e-book/ 这里记录下对此项目的理解.分为如下几篇: ● 对一个前端使用AngularJ

xcode6如何新建一个空项目+添加导航视图控制器

欢迎转载,请注明出处. 解说:使用xcode6的Empty项目模板创建出的项目啥都没有,及不方便.本编就先教大家如何创建一个包含有Target以及Appdelegate等目录的空项目以及添加导航视图控制器. 步骤1:打开xcode6,然后File - > New ->Project,打开后选择Single View Application模板,点击Next,输入项目名称,点击Next,选择保存位置,点击Create. 步骤2:选中项目名称,在配置栏中选择Info栏目,在Custom iOS T

Xcode6添加空项目模板

众所周知, Xcode6中没有了空项目的模板, 也有人在新建文件的时候,找不到category 之类的东西 空项目是真的没有了, 但是 category 是有的,只是藏得比较深: 1.没有空项目 2.其实还有 category 等 言归正传 ,我们看看怎么给 Xcode6 添加空项目的模板. 首先,下载以下附件 http://download.csdn.net/detail/u011253060/8041807 感谢 @Me是轩 分享! 然后解压,将内容(四个文件夹)拷贝到(根据自己 Xcode

002-创建基本项目-新项目、空项目、已有项目

一.创建基本项目 您可以使用create-react-app软件包或创建一个空的IntelliJ IDEA项目并在其中安装React.create-react-app项目地址:https://github.com/facebookincubator/create-react-app 1.1.使用create-react-app生成React应用程序[第一种] create React App是开始构建新的React单页应用程序的推荐方式.因此,您的开发环境已预先配置为使用webpack,Babe

ASP.NET MVC从空项目开始定制项目

在上一篇net core的文章中已经讲过如何从零开始搭建WebSocket. 今天聊聊ASP.NET的文件结构,如何用自己的目录结构组织项目里的文件. 如果用Visual Studio(VS)向导或dotnet向导,会为我们生成一套MVC通用框架.不过,对于一个要求更特殊或更小的项目,它可能并不如我们所愿.大小写混合的文件名,有时也不太适合像Linux这样的系统,至少我是这样感觉.目录层次太深也是挺烦恼的事情(夸张的设计,像nodejs里那种把windows地址最大长度都占满是真挺吓人的). 假

Visual Studio 2019尝鲜----新建空项目体验

等待一个中午的时间终于下载安装完成,vs版本Enterprise 2019  16.0.4 官方可直接下载安装引导程序:  https://visualstudio.microsoft.com/zh-hans/downloads/ 网上找了个Visual Studio 2019(VS2019) 企业版 Enterprise版密钥试了下OK:BF8Y8-GN2QH-T84XB-QVY3B-RC4DF 建几个空项目瞧瞧有什么变化: 1.建个.net core控制台应用: 下一步,编辑项目名称: 代码