没有合适的资源?快使用搜索试试~ 我知道了~
RED5安装与配置.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 158 浏览量
2022-06-26
09:53:01
上传
评论
收藏 1.2MB DOC 举报
温馨提示
试读
63页
RED5安装与配置.doc
资源推荐
资源详情
资源评论
将所有的应用程序都放在 根目录下的”webapps目录。你需要
为所创建的程序在 webapps 目录下添加相应的目录。在你的应用程序目录里
应该有一个名为”WEB-INF的目录,用来存放你的程序的配置文件。
在”doc/templates/myapp目录有一个模板,可以用来帮你完成建立程序
的初始工作。
启动的时候,在”目录的程序文件都是搜索”的目录
下的配置文件来完成配置的。
最主要的配置文件是”。这个文件里包含了以下参数:
globalScope:指定全局作用范围
!"#
$ %&'(&#%&
) #
contextCongLocation:指定配置 *' 的文件的位置。这些配置文
件描述了客户端加入#离开的动作触发后调用的处理方法,作用范围。在描述的
时候可以使用通配符来描述多个文件:
+,!-.#
$ %&##'/#%&
) #
locatorFactorySelector:程序的根上下文,通常是”'
0"#
$ %&'#%&
) #
parentContextKey:父级上下文,通常是”'(&
+10#
$ %&'(&#%&
) #
log4jCongLocation:日志配置文件的位置
!)2+,!-.#
$ %&##!)2.#%&
) #
webAppRootKey:程序的全局唯一名
310#
$ %�#%&
) #
对于每一个 4' 配置文件最少需要有三个
Context:用来影射路径到某个作用范围、搜索服务和 4',它有一个保
留的名字”。 其默认的类为 org.red5.server.Context
.'55!'%+
&.5060#
对于没有一个应用程序只应该有一个 +,但是同一个 + 可以被多
个作用范围共享
Scope:每一个应用程序最少有一个作用范围,用来将 *' 连接到
和服务器。作用范围可以建立一棵树,每一个客户端连接到树上的一
个节点,而共享对象存在于作用范围里。可以把作用范围看作是聊天室或者程
序实例。默认的作用范围通常是 web.scope,不过这名字是可以任意取的。
对于 有以下属性:
server:与全局服务器”'%相关。
parent:指定当前作用范围的父范围,通常是”!
context:当前作用范围的服务器上下文,一般指定为”
handler:对应当前作用范围的 *'
contextPath:用来连接到当前作用范围的路径
virtualHosts:一个主机名或 7 的列表,用来描述虚拟主机的位置,列表项
目之间用逗号分隔开。
.'55!'%"
..*'5!.
$ 05%(5'%#
) 05(5!#
05(5#
8 05*'(5*'#
9 057*%&5#0#
: 05%.&4%&5*; 9<<
#
= #
为了应用程序配置方便的需要,可以将”contextPath和”virtualHosts放
到另外一个单独的属性文件里边,而在这里使用变量来表示,为此需要添加一
个特别的 来指定属性文件的位置。
.'5*'+,!
5!.!(>(0,!707
*'+,!&
05.%&5##'
.#
$ #
假设在属性文件 red5-web.properties 里有如下的数据:
7*5#0
%.&45*; 9<<
则上边的 bean 的”contextPath和”virtualHosts属性即可使用变量来
指定值
057*
%&5*?##&0.!#@A7*B#
05%.&4
%&5*?##&0.!#@A%.&4B#
对于”contextPath可以视为是一个根作用范围。你可以在配置好
的”contextPath路径后边随意添加其他的路径,而连接到这些路径的客户
端将动态创建另外的作用范围,这些作用范围使用的是同样的 handler,但拥
有自己的属性、共享对象和活动流。
handler:每一个上下文需要一个 handler 来响应用户连接、离开作用范围
时的动作,handle 实现了很多方法,用户可以调用以达到特定的目的。这个
handler 必须实现”org.red5.server.api.IScopeHandler接口,当然
针对共享对象和流的访问还应该实现其他的接口。
在”org.red5.server.adapter.ApplicationAdapter可以找到一个能
够用作基类的例子,同时还应该多多参照文档以得到更多细节。
某个作用范围的 handler 可以如下指定:
.'5*'
5**03..
$ .!5&#
其中”id属性是上边定义的作用范围里指定的。
如果你不需要任何服务端的逻辑处理,可以使用 Red5 默认提供的 handler
.'5*'
5!'%'3..3'
$ .!5&#
handler 的例子
>!**0C
.!'%'3..3'C
$ &.3..'3..3'A
) &.&''D&;&EA
&FC
8 B
9 B
这里假设使用上边的配置,则在客户端调用的时候使用以下方式
5+.DEC
D?##*#0EC
$ &5(&.D2EA
) D6*&.F2EC
B
8 D'';;; EC
返回因该有输出:
The result is 3
///////////////////////////////////////////////////////////////
基于
'
的在线视频录制实例和详细注释
最近在学校做毕业设计
顶着压力,昨天晚上研究了一个晚上 ' 和 $ 发现还是蛮有意思的
' 和 ( 都是个不错的东西,发现在压力下学东西学起来特别快哈
//预定义声明
import mx.utils.Delegate;
//创建一个基本的网络连接对象
var nc:NetConnection = new NetConnection();
//连接到本地的 Red5 服务器
nc.connect("rtmp://localhost/online");
//将已和 red5 服务器建立连接的 nc 传递给 NetStream
var ns:NetStream = new NetStream(nc);
//从摄像头和麦克风取得信息
var cam:Camera = Camera.get();
var mic:Microphone = Microphone.get();
//初始化摄像头和麦克风,调用函数
setupCameraMic();
//保存上次录制的内容,并进行清空
var lastVideoName:String = "";
//监听开始录制和停止录制两个按键的点击动作并进行相应的处理
playButton.addEventListener("click", Delegate.create(this,
playClick));
stopButton.addEventListener("click", Delegate.create(this,
stopClick));
//定义开始录制的 playclick 函数
function playClick():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;
}
function stopClick():Void
{
//关闭 ns 与 red5 的连接
ns.close();
//并清空视频显示窗口
videoContainer.attachVideo(null);
videoContainer.clear();
//锁定开始按键使其生效
playButton.enabled = true;
//锁定停止按键使其失效
stopButton.enabled = false;
//播放已经录制的视频
playLastVideo();
}
function playLastVideo():Void
{
// 传递录制的视频信息给视屏显示窗口
videoContainer.attachVideo(ns);
剩余62页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3655
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功