RED5安装与配置.docx

上传人:b****6 文档编号:16455086 上传时间:2023-07-13 格式:DOCX 页数:32 大小:504.11KB
下载 相关 举报
RED5安装与配置.docx_第1页
第1页 / 共32页
RED5安装与配置.docx_第2页
第2页 / 共32页
RED5安装与配置.docx_第3页
第3页 / 共32页
RED5安装与配置.docx_第4页
第4页 / 共32页
RED5安装与配置.docx_第5页
第5页 / 共32页
RED5安装与配置.docx_第6页
第6页 / 共32页
RED5安装与配置.docx_第7页
第7页 / 共32页
RED5安装与配置.docx_第8页
第8页 / 共32页
RED5安装与配置.docx_第9页
第9页 / 共32页
RED5安装与配置.docx_第10页
第10页 / 共32页
RED5安装与配置.docx_第11页
第11页 / 共32页
RED5安装与配置.docx_第12页
第12页 / 共32页
RED5安装与配置.docx_第13页
第13页 / 共32页
RED5安装与配置.docx_第14页
第14页 / 共32页
RED5安装与配置.docx_第15页
第15页 / 共32页
RED5安装与配置.docx_第16页
第16页 / 共32页
RED5安装与配置.docx_第17页
第17页 / 共32页
RED5安装与配置.docx_第18页
第18页 / 共32页
RED5安装与配置.docx_第19页
第19页 / 共32页
RED5安装与配置.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

RED5安装与配置.docx

《RED5安装与配置.docx》由会员分享,可在线阅读,更多相关《RED5安装与配置.docx(32页珍藏版)》请在冰点文库上搜索。

RED5安装与配置.docx

RED5安装与配置

 

RED5将所有的应用程序都放在RED5根目录下的”webapps“目录。

你需要为所创建的程序在webapps目录下添加相应的目录。

在你的应用程序目录里应该有一个名为”WEB-INF“的目录,用来存放你的程序的配置文件。

在”doc/templates/myapp“目录有一个模板,可以用来帮你完成建立程序的初始工作。

RED5启动的时候,在”webapps”目录的程序文件都是搜索”WEB-INF”的目录下的配置文件来完成配置的。

最主要的配置文件是”web.xml”。

这个文件里包含了以下参数:

globalScope:

指定全局作用范围

1.

2.globalScope

3.default

4.

contextConfigLocation:

指定配置handler的文件的位置。

这些配置文件描述了客户端加入/离开的动作触发后调用的处理方法,作用范围。

在描述的时候可以使用通配符来描述多个文件:

1.

2.contextConfigLocation

3./WEB-INF/red5-*.xml

4.

locatorFactorySelector:

程序的根上下文,通常是”red5.xml”

1.

2.locatorFactorySelector

3.red5.xml

4.

parentContextKey:

父级上下文,通常是”default.context”

1.

2.parentContextKey

3.default.context

4.

log4jConfigLocation:

日志配置文件的位置

1.

2.log4jConfigLocation

3./WEB-INF/log4j.properties

4.

webAppRootKey:

程序的全局唯一名

1.

2.webAppRootKey

3./myapp

4.

对于每一个Handler配置文件最少需要有三个bean

Context:

用来影射路径到某个作用范围、搜索服务和Handler,它有一个保留的名字”web.context”。

其默认的类为org.red5.server.Context

1.

2.autowire=“byType“/>

对于没有一个应用程序只应该有一个Context,但是同一个Context可以被多个作用范围共享

Scope:

每一个应用程序最少有一个作用范围,用来将handler连接到context和服务器。

作用范围可以建立一棵树,每一个客户端连接到树上的一个节点,而共享对象存在于作用范围里。

可以把作用范围看作是聊天室或者程序实例。

默认的作用范围通常是web.scope,不过这名字是可以任意取的。

对于bean有以下属性:

server:

与全局服务器”red5.server”相关。

parent:

指定当前作用范围的父范围,通常是”global.scope”

context:

当前作用范围的服务器上下文,一般指定为”web.context”

handler:

对应当前作用范围的handler

contextPath:

用来连接到当前作用范围的路径

virtualHosts:

一个主机名或IP的列表,用来描述虚拟主机的位置,列表项目之间用逗号分隔开。

1.

2.init-method=“register“>

3.

4.

5.

6.

7.

8.

9.

为了应用程序配置方便的需要,可以将”contextPath“和”virtualHosts“放到另外一个单独的属性文件里边,而在这里使用变量来表示,为此需要添加一个特别的bean来指定属性文件的位置。

1.

2.

3.

假设在属性文件red5-web.properties里有如下的数据:

1.webapp.contextPath=/myapp

2.webapp.virtualHosts=localhost,127.0.0.1

则上边的bean的”contextPath“和”virtualHosts“属性即可使用变量来指定值

1.

2.

对于”contextPath“可以视为是一个根作用范围。

你可以在配置好的”contextPath“路径后边随意添加其他的路径,而连接到这些路径的客户端将动态创建另外的作用范围,这些作用范围使用的是同样的handler,但拥有自己的属性、共享对象和活动流。

handler:

每一个上下文需要一个handler来响应用户连接、离开作用范围时的动作,handler实现了很多方法,用户可以调用以达到特定的目的。

这个handler必须实现”org.red5.server.api.IScopeHandler“接口,当然针对共享对象和流的访问还应该实现其他的接口。

在”org.red5.server.adapter.ApplicationAdapter“可以找到一个能够用作基类的例子,同时还应该多多参照文档以得到更多细节。

某个作用范围的handler可以如下指定:

1.

2.class=“the.path.to.my.Application“

3.singleton=“true“/>

其中”id“属性是上边定义的作用范围里指定的。

如果你不需要任何服务端的逻辑处理,可以使用Red5默认提供的handler

1.

2.class=“org.red5.server.adapter.ApplicationAdapter“

3.singleton=“true“/>

handler的例子

1.packagethe.path.to.my;

2.importorg.red5.server.adapter.ApplicationAdapter;

3.publicclassApplicationextendsApplicationAdapter{

4.publicDoubleadd(Doublea,Doubleb){

5.returna+b;

6.}

7.}

这里假设使用上边的配置,则在客户端调用的时候使用以下方式

1.nc=newNetConnection();

2.nc.connect(“rtmp:

//localhost/myapp“);

3.nc.onResult=function(obj){

4.trace(“Theresultis“+obj);

5.}

6.nc.call(“add“,nc,1,2);

返回因该有输出:

Theresultis3

 

///////////////////////////////////////////////////////////////

基于red5的在线视频录制实例和详细注释

最近在学校做毕业设计

顶着压力,昨天晚上研究了一个晚上red5和as3发现还是蛮有意思的

red5和fms都是个不错的东西,发现在压力下学东西学起来特别快哈

//预定义声明

importmx.utils.Delegate;

//创建一个基本的网络连接对象

varnc:

NetConnection=newNetConnection();

//连接到本地的Red5服务器

nc.connect("rtmp:

//localhost/online");

//将已和red5服务器建立连接的nc传递给NetStream

varns:

NetStream=newNetStream(nc);

//从摄像头和麦克风取得信息

varcam:

Camera=Camera.get();

varmic:

Microphone=Microphone.get();

//初始化摄像头和麦克风,调用函数

setupCameraMic();

//保存上次录制的内容,并进行清空

varlastVideoName:

String="";

//监听开始录制和停止录制两个按键的点击动作并进行相应的处理

playButton.addEventListener("click",Delegate.create(this,playClick));

stopButton.addEventListener("click",Delegate.create(this,stopClick));

//定义开始录制的playclick函数

functionplayClick():

Void

{

//此flv文件是保存在webapps/oflaDemo/streams/文件夹

//将摄像头和麦克风赋给ns

ns.attachVideo(cam);

ns.attachAudio(mic);

//将摄像头信息赋给视频显示窗口,这样我们可以即时看到信息

videoContainer.attachVideo(cam);

//此处是定义存储名字的,用随机数目获得一个唯一的文件名

lastVideoName="red5RecordDemo_"+random(getTimer());

ns.publish(lastVideoName,"record");

//锁定开始按键使其失效

playButton.enabled=false;

//锁定停止按键使其生效

stopButton.enabled=true;

}

functionstopClick():

Void

{

//关闭ns与red5的连接

ns.close();

//并清空视频显示窗口

videoContainer.attachVideo(null);

videoContainer.clear();

//锁定开始按键使其生效

playButton.enabled=true;

//锁定停止按键使其失效

stopButton.enabled=false;

//播放已经录制的视频

playLastVideo();

}

functionplayLastVideo():

Void

{

//传递录制的视频信息给视屏显示窗口

videoContainer.attachVideo(ns);

//回访已经上次录制的视频片段

ns.play(lastVideoName);

}

functionsetupCameraMic():

Void

{

//启动摄像头

cam=Camera.get();

//设置尺寸

cam.setMode(320,240,30);

//设置录制质量

cam.setQuality(0,70);

//启动麦克风

mic=Microphone.get();

mic.setRate(44);

}

///////////////////////////////////////////////////////////////

公司今天需要装一台RED5的服务器用来开发程序。

发现RED5的0.6已经正式放出,以前我写过一篇关于用SVN进行抽取,然后建立RED5项目的文章。

而对于一般的开发者来说,不需要去修改RED5本身的程序,只需要建立自己的应用程序就可以了。

现在把建立过程记录下来,希望对各位有所帮助。

本文适合第一次接触RED5(WIN平台下),而不知道如何开始建立自己的应用程序的用户。

流程:

1.下载最新版本的RED5 http:

//osflash.org/red5

2.安装RED5,注意在安装RED5前要先安装好JRE,安装RED5的时候会要求指定JRE的目录的。

3.到RED5的安装目录,找到doc/templates目录,该目录中存放了一个标准的RED5应用程序模版myapp,将其复制到RED5安装目录中的webapps目录下,并改名为你喜欢的文件夹名,比如你要开发一个聊天的程序,那么可以把myapp改为myChat,这个名字就是以后你要连接的服务名了。

4.在WEB-INF中新建一个文件夹src用来存放程序的源代码,新建一个classes文件夹用来存放编译后的文件。

5.打开Eclipse,将工作区指定为RED5安装目录下webapps,然后新建一个项目,项目名为myChat.这个时候你应该发现刚才myChat中的文件都被加载进来了,我们首先把src目录指定为源代码目录,右键选择src,在弹出的菜单中选择BuildPath->UseasSourceFolder,即将其指定为代码文件夹。

接下来要指定项目的目标目录,在项目名上右键选择Properties,选择JavaBulidPath,在选择Source标签,在下面的Browse中选择Classes目录,将其指定为目标目录。

然后选择Libraries,点击AddExternalJARs,将RED5安装目录下的red5.jar包含进来。

6.这个时候,在Eclipse的左边应该多了WEB-INF/src这样一个东东,我们将要在这里开始写入我们的第一个项目代码。

右键选择它,在弹出的菜单中选择New->Package,新建一个包,举例,包名可以为org.d5.first,然后再在生成的org.d5.first这个包上继续右键选择New->File,输入文件名Application.java。

并在建好的文件中输入以下代码:

packageorg.d5.first;

importorg.red5.server.adapter.ApplicationAdapter;

publicclassApplicationextendsApplicationAdapter{

publicStringlogin(){

return"WelcometoChatServers";

}

}

7.进行配置。

编辑WEB-INF下的red5-web.xml,找到beanid=”web.handler”一句,将class=”XXX”中的XXX位置修改为org.d5.first.Application,这样本程序将以刚才写的Application来运行。

删除后面的beanid=”server.handler…整句,因为我们暂时用不到这个东东。

编辑web.xml,找到webAppRootKey,将其下面的param-value标签中的值修改为/myChat。

编辑red5-web.properties,将第一句修改为webapp.contextPath=/myChat

8.编译项目

9.重新启动RED5服务器

10.在FLASH中新建一个文件,输入以下代码:

import.NetConnection;

import.Responder;

varresponder:

Responder=newResponder(chat);

varnc:

NetConnection=newNetConnection();

nc.connect("rtmp:

//localhost/mytest");

nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);

functionchat(obj:

Object):

void{

   trace(obj);

}

functionstatusHandler(event:

NetStatusEvent):

void

{

   trace(event.info.code);

   switch(event.info.code)

   {

      case"NetConnection.Connect.Success":

         trace("Theconnectionwasmadesuccessfully");

         break;

      case"NetConnection.Connect.Rejected":

         trace("sorry,theconnectionwasrejected");

         break;

      case"NetConnection.Connect.Failed":

         trace("Failedtoconnecttoserver.");

         break;

   }

}

nc.call("login",responder);

运行程序,显示结果为WelcometoChatServers。

第一个RED5应用程序诞生了,呵呵:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

忙了好几天,最近也算把Red5服务器服务端基本搞定了。

 

为了熟悉服务端代码,以及了解API,我仿照着FMS的模式做了一个多人聊天室。

基本实现了视频、群聊、私聊几个基本功能。

看到网上似乎还没有人放出这类的源代码,我索性就先当回螃蟹吧!

 

我们先来看代码:

 

服务端:

 

Application.java 

packageorg.jerry.videochat; 

importjava.util.*; 

importorg.red5.server.adapter.ApplicationAdapter; 

importorg.red5.server.api.IConnection; 

importorg.red5.server.api.IScope; 

importorg.red5.server.api.service.IServiceCapableConnection; 

importorg.red5.server.api.so.ISharedObject; 

publicclassApplicationextendsApplicationAdapter{ 

//属性 

privateIScopeappScope; 

privateStringusername; 

privateISharedObjectlistSO; 

privateISharedObjectmsgSO; 

privateMaponLineClient=newHashMap(); 

//方法 

//此应用开始运行时触发的方法 

publicbooleanappStart(IScopeapp){ 

if(!

super.appStart(app)){ 

returnfalse; 

appScope=app; 

returntrue; 

//客户端连接的时候触发的方法 

publicbooleanappConnect(IConnectionconn,Object[]params){ 

username=(String)params[0]; 

//登入时将连接ID和连接信息形成对应关系并存入在线列表 

Stringlink_id=conn.getClient().getId(); 

onLineClient.put(username,conn); 

//为用户列表共享对象添加属性 

//创建用户列表共享对象 

listSO=getSharedObject(appScope,"listSO",false); 

//创建用户聊天内容共享对象 

msgSO=getSharedObject(appScope,"msgSO",false); 

listSO.setAttribute(link_id,username); 

returntrue; 

//广播消息 

public

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2