3904
- 收藏
- 点赞
- 分享
- 举报
如何创建Red5应用程序
[code]一.序言:
========================
本文档的目的是描述如何在Red5中创建应用程序.需要使用Red5中所给的API.
二.应用程序目录:
========================
在默认的情况下,Red5将所有的应用程序存放在根目录的"Webapps"目录下面.因此在创建一个新的应用程序之前,首先需要在这个目录中创建一个子目录.习惯上这个子目录的名字应该和马上创建的应用程序的名字是一样的.
在你的新应用程序中,需要一个"WEB-INF"的文件夹用来存放关于使用类情况的配置文件.你可以使用Red5提供的一个模板,它可以在"doc/templates/myapp"文件夹中找到.
在Red5启动的时候,所有文件夹中的配置文件都会搜索到.
三.配置:
========================
这个主要的配置文件是:"Wed.xml".它包含了如下参数:
1.globalScope:
如下例子"globalScope"为参数名字,"default"为参数对应的默认值.
globalScope
default
2.contextConfigLocation
设置应用程序中控制文件的名称.这些控制文件列出了应用程序连接或断开客户端的类,同时也提供客户端可以调用的方法的类.
控制文件还设定了这些类的有效范围.
在这个路进中还可以使用通配符,从而可以包含进来多个文件.::
contextConfigLocation
/WEB-INF/red5-*.xml
3.locatorFactorySelector
指定根应用程序上下文配置文件通常是"red5.xml"::
locatorFactorySelector
red5.xml
4.parentContextKey
父上下文的名字,通常是"default.context"::
parentContextKey
default.context
5.log4jConfigLocation
指定子log系统的路径.
log4jConfigLocation
/WEB-INF/log4j.properties
6.webAppRootKey
应用程序唯一的名称::
webAppRootKey
/myapp
四.配置文件
每一个控制配置文件都至少包括如下三种Bean.
1.Context
这个Context bean有个预留的名字"web.context",它用来将路径放入域中,同时查找服务和控制器.默认的类是"org.red5.server.Context".
具体代码如下:
每个应用程序只能有一个Context.然而这个Context能够夸多个域共享.
2.域(Scope)
每一个应用程序至少有一个Scope,这个Scope将控制器(Handler)连接到了Context和Server.这个Scopes用来建造一个树结构,客户端能够连接到这个树上的任何一个节点和共享对象(例如共享对象或者实时流).你可以将Scope看作是一个房间或者实例.
默认的Scope通常有个名字"web.scope",但是这个名字可以任意的选择.
这个Bean有如下的属性.
"server"----设置全局的服务器域"red5.server".
"parent"----设置父域,通常是"global.scope".
"context"----指当前域,使用上面提到的"web.context"
"handler"----当前域的控制器(Handler,下面将会提到).
"contextPath"----连接当前域的路径.
"virtualHosts"----用逗号分割开当然域(scope)运行的一组主机名或者IP地址.
例如:
init-method="register">
你可以将"contextPath"和"virtualHosts"的值转移到一个单独的properties文件,然后用参数表示.如果是这样的话,你就需要另外的一个Bean::
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
假设一个"red5-web.properties"文件包含如下数据::
webapp.contextPath=/myapp
webapp.virtualHosts=localhost,127.0.01
那么,在Scope中的参数将会变成如下样子::
这个"contextPath"将会被看作域的"根(root)".当需要动态创建扩展域的时候,你可以在这个路进后边添加新的元素.
这个额外域将使用同一个控制器(Handler),但是他们都拥有自己独立的属性,共享对象和实时流.
3.控制器(Handlers)
每一个Context都需要一个控制器(Handler),它实现一个方法,这个方法将在一个客户端连接这个域(Scope)时触发.这个控制器需要实现的接口是:"org.red5.server.api.IScopeHandler",然而如果你想控制访问共享对象或者流,你也可以实现其它接口.
有一个"org.red5.server.adapter.ApplicationAdapter"作为一个基础类可以在类库中找到,这个类就是一个简单实现的例子.更多详细信息请查阅javadoc文档.
这个Bean作为一个域的控制器要进行如下配置::
这个ID的参数就是上面提到的域(scope)设置.
五.简单控制器
用下面几行代码实现一个简单的控制器::
package the.path.to.my;
import org.red5.server.adapter.ApplicationAdapter;
public class Application extends ApplicationAdapter{
public Double add(Double a,Double b){
return a+b;
}
}
假设已经经过了上面的配置,你可以通过如下的脚本来调用这个方法.
nc = new NetConnection();
nc.connect("rtmp://localhost/myapp");
nc.onResult = function(obj){
trace("This result is " +obj);
}
nc.call("add",nc,1,2);
输出的结果如下:
The result is 3;
[/code]
========================
本文档的目的是描述如何在Red5中创建应用程序.需要使用Red5中所给的API.
二.应用程序目录:
========================
在默认的情况下,Red5将所有的应用程序存放在根目录的"Webapps"目录下面.因此在创建一个新的应用程序之前,首先需要在这个目录中创建一个子目录.习惯上这个子目录的名字应该和马上创建的应用程序的名字是一样的.
在你的新应用程序中,需要一个"WEB-INF"的文件夹用来存放关于使用类情况的配置文件.你可以使用Red5提供的一个模板,它可以在"doc/templates/myapp"文件夹中找到.
在Red5启动的时候,所有文件夹中的配置文件都会搜索到.
三.配置:
========================
这个主要的配置文件是:"Wed.xml".它包含了如下参数:
1.globalScope:
如下例子"globalScope"为参数名字,"default"为参数对应的默认值.
2.contextConfigLocation
设置应用程序中控制文件的名称.这些控制文件列出了应用程序连接或断开客户端的类,同时也提供客户端可以调用的方法的类.
控制文件还设定了这些类的有效范围.
在这个路进中还可以使用通配符,从而可以包含进来多个文件.::
3.locatorFactorySelector
指定根应用程序上下文配置文件通常是"red5.xml"::
4.parentContextKey
父上下文的名字,通常是"default.context"::
5.log4jConfigLocation
指定子log系统的路径.
6.webAppRootKey
应用程序唯一的名称::
四.配置文件
每一个控制配置文件都至少包括如下三种Bean.
1.Context
这个Context bean有个预留的名字"web.context",它用来将路径放入域中,同时查找服务和控制器.默认的类是"org.red5.server.Context".
具体代码如下:
每个应用程序只能有一个Context.然而这个Context能够夸多个域共享.
2.域(Scope)
每一个应用程序至少有一个Scope,这个Scope将控制器(Handler)连接到了Context和Server.这个Scopes用来建造一个树结构,客户端能够连接到这个树上的任何一个节点和共享对象(例如共享对象或者实时流).你可以将Scope看作是一个房间或者实例.
默认的Scope通常有个名字"web.scope",但是这个名字可以任意的选择.
这个Bean有如下的属性.
"server"----设置全局的服务器域"red5.server".
"parent"----设置父域,通常是"global.scope".
"context"----指当前域,使用上面提到的"web.context"
"handler"----当前域的控制器(Handler,下面将会提到).
"contextPath"----连接当前域的路径.
"virtualHosts"----用逗号分割开当然域(scope)运行的一组主机名或者IP地址.
例如:
你可以将"contextPath"和"virtualHosts"的值转移到一个单独的properties文件,然后用参数表示.如果是这样的话,你就需要另外的一个Bean::
假设一个"red5-web.properties"文件包含如下数据::
webapp.contextPath=/myapp
webapp.virtualHosts=localhost,127.0.01
那么,在Scope中的参数将会变成如下样子::
这个"contextPath"将会被看作域的"根(root)".当需要动态创建扩展域的时候,你可以在这个路进后边添加新的元素.
这个额外域将使用同一个控制器(Handler),但是他们都拥有自己独立的属性,共享对象和实时流.
3.控制器(Handlers)
每一个Context都需要一个控制器(Handler),它实现一个方法,这个方法将在一个客户端连接这个域(Scope)时触发.这个控制器需要实现的接口是:"org.red5.server.api.IScopeHandler",然而如果你想控制访问共享对象或者流,你也可以实现其它接口.
有一个"org.red5.server.adapter.ApplicationAdapter"作为一个基础类可以在类库中找到,这个类就是一个简单实现的例子.更多详细信息请查阅javadoc文档.
这个Bean作为一个域的控制器要进行如下配置::
这个ID的参数就是上面提到的域(scope)设置.
五.简单控制器
用下面几行代码实现一个简单的控制器::
package the.path.to.my;
import org.red5.server.adapter.ApplicationAdapter;
public class Application extends ApplicationAdapter{
public Double add(Double a,Double b){
return a+b;
}
}
假设已经经过了上面的配置,你可以通过如下的脚本来调用这个方法.
nc = new NetConnection();
nc.connect("rtmp://localhost/myapp");
nc.onResult = function(obj){
trace("This result is " +obj);
}
nc.call("add",nc,1,2);
输出的结果如下:
The result is 3;
[/code]
我来回答
回答2个
时间排序
认可量排序
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
02014-12-08 08:56:28
-
2014-10-22 11:01:40
-
2014-10-22 11:14:46
-
642014-10-22 11:23:30
-
2016-01-05 19:53:18
-
2014-12-03 17:15:20
-
2016-10-31 17:04:15
-
2016-01-30 14:36:47
-
2020-02-15 18:54:07
-
2012-12-04 11:52:00
-
2020-10-09 16:52:48
-
2008-08-23 16:07:24
-
2013-03-11 15:15:55
-
2008-12-19 13:05:51
-
2015-03-19 17:26:19
-
2017-01-22 17:21:17
-
2016-06-09 09:30:49
-
02008-11-24 10:13:32
-
2018-11-15 22:00:41
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
-
10求HI3519DV500_SDK_V2.0.1.1
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认