• 【设为首页】
  • 【收藏闪客居】
当前位置:主页 > FLASH AS 编程 > RED5 > 文章内容
  • red5 使用笔记二

  • 来源: 作者: 2008-06-15 【 】 TAG:

  刚刚弄完教育版的开发,接着又是基本版的升级,主要还是为了配合新版的流媒体服务器,工作任务真是衔接的够紧密-_-!,经过测试,原来建立在 red5_0.6.3,和fms2上的服务器端应用程序,已经不能直接在新版服务器上直接运行了,所以不得不仔细研究新版服务器的变化,以便修改相应的服务器代码。

    red5 v0.7.0虽然早在2008年2月23号就已经发布了,不过前段时间,又是教育版,又是定制,所以一直也没时间去研究新的red5,再加上当时公司也暂时没这个要求,所以也没太在意,不过一下从0.6.3更新到0.7.0,跨度还是很大的,感觉有点仓促,结果造成服务器端的代码已经不能正常使用了,不过研究了一个上午,发现问题还是出现在服务器的配置上,好了,不说废话了,进入正题:

    从这次开始,我将会从red5的安装开始陆续介绍一些基本的功能在red5上的实现,包括数据传输,服务器的广播,服务器和客户端的互相调用,服务器端的文件操作,服务器端的remoting技术等。

“安装Red5”

    首先删除老版red5,然后在http://osflash.org/red5/070final上下载最新的red5。点击 Java 6 Version (hosted by: mediafire.com) 下载windows版的安装程序,其他平台的安装太麻烦,不过在使用上没什么区别,所以下的是windows平台的。

先看看新版的变化:

Major changes since 0.6.3:

    *
      Initial Edge/Origin clustering support for multiple Edges with a single Origin
    *
      New Flex admin tool
    *
      Added a multi-threaded ApplicationAdapter that allows multiple clients to connect simultaneously to the same application
    *
      Added stream listeners that can get notified about received packets
    *
      Fixed a critical memory leak bug in networking due to MINA ExecutorFilter
    *
      Added new Flash Player 9 statuses NetStream.Play.FileStructureInvalid and NetStream.Play.NoSupportedTrackFound

The complete changelog can be found in the “doc” directory after the installation.

    简单看了看大致是说增加了有关集群技术的内容(好像目前不能用,也用不上),然后就是增加了一个admin tool,后来发现这个根本不能用,也有可能是我安装的问题,不过不影响正常试用,所以不管他了,另外还有一些别的,以后有时间再研究,呵呵。下载完成后正常安装就可以了。

一切的开始“myapp”

    在red5的安装目录(\doc\templates \ )下找到myapp文件夹,把它整个拷贝到red5安装目录的webapps文件夹下,然后重命名为“templates_myapp”。这个文件夹中包含的是一个red5端应用程序配置的模板,对这个模板进行简单的修改,就可以将我们编写的应用程序正常的运行在red5服务器上。具体修改方法如下:

    1、修改templates_myapp\WEB-INF下的四个文件,只要看到“myapp”就将其替换成“templates_myapp”。

    2、修改red5-web.properties文件中的webapp.virtualHosts为*,localhost, 127.0.0.1

    3、修改red5-web.xml中的class="the.path.to.my.Application"为class="org.red5.server.adapter.ApplicationAdapter"

    到此在red5v0.7.0以前的版本上一个自己的服务器应用程序已经配置好了,不过在0.7版中,像这样配置,在连接时仍然会提示找不到服务器应用程序,后来通过对比其他的实例文件,发现除了上述的改动外,还有一个比较特殊的改动,去掉web.xml中的下面一段话。

<listener>
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

    到此,一个服务器应用程序的配置就完成了。在客户端,你可以像连接一个默认的fms应用程序一样去连接他。

    要想具体了解每个配置的含义,可以参看red5自己的文档。

class="org.red5.server.adapter.ApplicationAdapter"

    这个配置可以简单的理解为指定red5工作的入口程序,其实就类似于fms中的application,而类 org.red5.server.adapter.ApplicationAdapter 是red5提供的系统入口,通过对它的扩展,就可以完成自己对于服务器的特殊应用和服务,类似fms中的各种操作都是通过对它的扩展而来的。

一个简单的red5 应用程序:

    刚才讲了半天配置,现在开始真正进入red5 的开发,下面做了一个简单的red5应用程序用来说明开发red5的一般流程。

    打开eclipse,新建一个工程,引入库文件red5.jar,然后新建包org.red5.test,在包内新建一个文件Application.java,打开它进行编辑。

    由于red5是完全由java语言开发的应用程序,所以代码对应java程序员来说,应该是很简单的,不过个人感觉,做flash开发的,懂java应该还是不多,所以介绍的比较繁琐,java程序员可以跳过,直接看源码。

    首先声明包package org.red5.test;

    然后导入相应的库文件:(具体功能和用法可以自己看文档)

import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.IClient;
import org.red5.server.api.Red5;

    扩展类ApplicationAdapter:

public class Application extends ApplicationAdapter {

}

    覆盖父类方法

@Override

public boolean connect(IConnection conn, IScope scope, Object[] params) {

}

   在里面添加代码

public boolean connect(IConnection conn, IScope scope, Object[] params) {
   System.out.println("connect");
   IClient client = conn.getClient();
   String uid = client.getId();
   System.out.println("connect->uid:"+uid);
   System.out.println("welcome to red5 world !");
   return true;
}

然后保存。完整的代码如下:

package org.red5.test;

import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.IClient;
import org.red5.server.api.Red5;

public class Application extends ApplicationAdapter {

    private IScope app = null;

    public boolean appStart(IScope __app){
        app = __app;
        super.appStart(app); 
        return true; 
    }


@Override
    public boolean connect(IConnection conn, IScope scope, Object[] params) {
        System.out.println("connect");
        IClient client = conn.getClient();
        String uid = client.getId();
        System.out.println("connect->uid:"+uid);
        System.out.println("welcome to red5 world !");
        return true;
    }
}

发布应用程序

点击File=>Export=>Java=>JAR file=>选择导出路径(注意:要以\Red5\webapps\下的目录名命名导出的文件名)

在\templates_myapp\WEB-INF文件夹下新建文件夹“lib”,将刚才导出的文件拷贝到该目录下

双击wrapper下的Red5.bat启动red5 服务器(注意不要关闭调试窗口)

客户端调试程序:

    用flash8连接的方法很简单,我就不举例了,这里想尝试用air做下测试(顺带了解下air)。在flex3里新建air项目,命名为templates_myapp,修改文件templates_myapp.mxml为:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Red5 Connect Test" creationComplete="appinit()">
<mx:Script>
   <![CDATA[
   import flash.display.Sprite;
    import flash.events.NetStatusEvent;
    import flash.events.SecurityErrorEvent;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.Event;

 
   var command:String="rtmp://192.168.0.163:1935/templates_myapp";//这里注意修改地址为你的red5服务器地址
   var mync:NetConnection=new NetConnection();
 
   function netStatusHandler(sevt:NetStatusEvent):void{
    var str="_____________________netStatusHandler_____________________\n";  
    str+="code:"+sevt.info.code+"\n";
    str+="level:"+sevt.info.level+"\n";
  
    if(sevt.info.application!=undefined){
     str+="application:"+sevt.info.application+"\n";
    }
  
    if(sevt.info.description!=undefined){
     str+="description:"+sevt.info.description+"\n";
     out_txt.text=str;
    }   
   }

 
   function appinit(){
    mync.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
 
   }
 
   function serverConnect():void{
    out_txt.text="Connectting ... ...";
    mync.connect(command);
    trace("serverConnect:"+command);
   }
 
   ]]>
</mx:Script>
<mx:Style>
   WindowedApplication
   {
    background-color:"0xffffff";
    background-alpha:"0.5";
   }
</mx:Style>
<mx:Label y="100" text="连接状态:未连接" horizontalCenter="0" fontSize="12" fontWeight="normal" id="out_txt" condenseWhite="true" height="150"/>
<mx:Button y="254" label="点击我连接Red5" fontSize="11" fontWeight="normal" horizontalCenter="0" click="serverConnect()"/>
</mx:WindowedApplication>

    运行air程序,点击按钮,应该能够得到成功连接服务器的信息。同时观察red5 服务器的调试窗口,是否输出了相应的信息。



上一篇:关于RED5——配置文件详解   下一篇:Red5 服务器初探 (互动媒体)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
推荐内容

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)