• 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传输的观点。

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

  • 相关阅读:
    学习制作iOS程序第八天:首页之本地缓存(26)
    学习制作iOS程序第五天:首页之推荐二手房(18)
    Webpack探索【15】--- 基础构建原理详解(模块如何被组建&如何加载)&源码解读
    计算税收在线工具
    XSS详解【3】---防御防御思路和防御方法
    XSS详解【2】---主要危害及其原理
    XSS详解【1】---基本概念和攻击原理
    11111111--临时保存
    Webpack探索【14】--- Typescript构建详解
    Webpack探索【13】--- Shimming详解
  • 原文地址:https://www.cnblogs.com/developerdaily/p/4627538.html
Copyright © 2020-2023  润新知