作者
:
周英科
email :li _li _li8 7222@163.com.qq:543246541
1
作者
:
周英科 email :li_li_li87222@163.com.qq:543246541 Red5
Red5
Red5
Red5
入门教程
简介:
在 fl ex,j ava 盛行天下时 red5
把二者连为一体成为更强的强者, 为即时通信, 流媒体开
发,
网络在线游戏提供了一个简单易行的方案。 越来越多的公司把这个方案当成了首先, 熟悉 相
关技术的人才的缺少也就成了发展的障碍,而相关资料的奇缺成了技术人员成长的障碍。
本书注重实用,着眼入门,用大量实际的例子力求带领您进入 fl ex,red5 结合开发的天堂
。
没一个列子都是精心挑选, 每一个列子都代表着一个知识点, 每一个列子都将成为您以后 项
目的一部分。当然这是入门级别的书籍,不可能把所有的相关知识都讲到,
j ava,fl ex,spring, mina 等等等等都 red5 相关, 如果要对每一个点讲解那将是一个系列, 而不 是
一本书。为了突出重点,本书只讲解把这些联系起来的纽扣 red5 ,并讲解如何利用 red5 开
发项目。
内容包括 red5 的安装, red5 开发中各种概念,各种问题的解决方案,开发工具的使用等
等, 但有详有略, 如工具的使用只讲解了书本中需要用到的相关知识。 最后书本还有数个 完
整的列子,也是实际开发中常用的列子,如聊天程序,播放视频程序。
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
For Evaluation Only.
作者
:
周英科
email :li _li _li8 7222@163.com.qq:543 246541
2
目录:
一. Red5 介绍及安装:
Red5 介绍
安装 red5
二.
编写运行第一个程序
编写服务器端
编写客户端
运行自己编写的程序
三.远程调用
客户端调用服务器端方法
Red5 调用客户端方法
遍历所有连接到服务器端的用户
好友上线通知
四.
sharedObject 共享对象
sharedObject 介绍
游戏中移动同步的原理和简单实现
1
五.
服务器执行计划
六.
录制播放视频
播放服务器端视频
录制视频
设置视频保存位置
七.
利用 scope , room 管理客户端
八.
视频播放程序
九.
简单聊天程序
附录:开发工具的使用
1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
For Evaluation Only.
作者
:
周英科
email :li _li _li8 7222@163.com.qq:543 246541
3
一.
Red5
Red5
Red5
Red5 介绍及安装
1. Red5 介绍
Red5
是
一个采用 Java 开发开源
免费的
的 Flash 流媒体服务器
,
功能和 Adobe 的
fm s
(
Fl ash
Medi
a
Server
)相同,可以
上官方网站 http://www.osflash.org/red5 免费下载并使用。
它支持把音频(
MP3
)
和视频( FLV )转换成播放流 ,在下载的同时播放流
;
录制客户端播放流(只支持 FLV
)
,把摄像头,麦
克风等传入的视频音频录制保存到服务器
;共享对象;现场直播流发布;远程调用。
Red5 使用 RSTP
作 为
流媒体传输协议
。
Red5 的功能使其在许多领域得到应用。如视频播放网站,远程教育,视频会议程序,聊天程序,网络
游戏等等。
免费开源使软件更加容易扩展, 下载后你可以对源代码进行修改; 更加经济, 比起
fm s 高昂的费用 re d5
能为一般的应用节约大笔费用; 服务器端的
java 语言比起 fm s 服务器端的 actionscri pt2 语言更加面向
对
象更加成熟。这使得
red5
还没到版本 1 就已经红遍世界。
2.red5 安装
第一步
上 java.sun.com 下载
jdk6
并安装。如果不是安装在默认路径请设置 classpath 和 path
。 设
置 classpath 和 path 的方法请参考其他 java
的资料
。
第二步
上 http://www.osflash.org/red5 下载 Red5 v0.7.0 Final 的 wi ndow 安装版。点击下载到
的 exe 文件即开始安装,安装过程中选择要把 red5 安装到的目录。安装结束后打开浏览器输入
http://localhost:5080/ 如果能打开显示 “ Red5
Test
Page ” 表示安装成功。安装成功后可以运行查看
red5
自带的例子。
第三步 red5
的启动和关闭。安装版的 red5 默认情况下会在计算机启动时启动,如果想关闭自启动可以
右击我的电脑 -> 管理 -> 服务和程序,找到
red5
的那项把启动方式的自动启动改为手动或其他的。更改了
启动方式后可以找到
red5
的安装目录下的 wrapper 目录下的 Red5.bat 文件,双击即可启动,这样可以
从窗口看到客户端连接的情况。关闭窗口即可关闭
red5
,也可以双击 StopRed5-NT .bat
关闭服务程序。
二. 编写运行第一个程序
第一个程序的运行是学习的莫大回报,也是继续下面学习的关键,只有顺利的运行了第一个程序才会
更加信心百倍的去学习更深一步的知识。
Red5+ flex 或 red5+ flash 的项目一般都包括服务器和客户端俩个部分,服务器用
java
,客户端用
fl ex 或 fl ash 。编写并编译完服务器端代码后需要把服务器的的应用部署到
red5
的 webapps 目录下这和
传统的 java 应用没区别,客户端可以直接点击 fl ash 文件运行。
下面开始第一个程序的编写,它分成服务器和客户端俩部分 , 以后的程序也都安这种方式分。
1.
编写服务器端
打开
eclipse
新建 java 工程或 javaee 工程 chapter2 (如果不熟悉 eclipse 请参考附件 eclipse
的
使用) 。把
red5
安装目录下的 red5.jar 以及 lib 目录下的 jar 都添加到工程的类库中。
新建包 fi rst ,然后新建类,类名称为 Appli cation 并继承 Appl i cationAdapter 。类的代码如下:
package fi rst;
im port
org.red5.server .adapter.Appli cati onAdapter;
im port org.red5.server .api.IConnecti on;
public class Appli cation extends Appli cationAdapter {
public boolean appConnect(IConnection conn, Object[] args) {
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
For Evaluation Only.
作者
:
周英科
email :li _li _li8 7222@163.com.qq:543 246541
4
System .out.println(" 连接 ");
return true;
}
public String change(String
str){
System .out.println(" 客户端调用服务器 ");
return
str.toUpperCase();//
传入的字符串转换成大写后返回
}
}
2. 编写客户端
打开 fl exbuilder3 新建 fl ex
工程 (具体
fl exbuilder
的使用请参考附录) , 名字取名为
chapter
2
。
打开项目中 chapter2.mxml 。 chapter2.mxml 的代码如下:
<?xml
version= "1.0" encodi ng="utf-8"?>
< m x:Applicati on xm lns:m x="http://www.adobe.com /2006/m xml" layout= "absolute"
fontSiz e="12" backgroundGradientAlphas="[1.0, 1.0]"
backgroundGradientColors="[#FDF9F9, #FDF9F9]" wi dth="442" height= "344">
< m x:Script>
< ![CDATA[
im port m x.controls.Alert;
pri vate var
rtm pURL:Stri ng="rtm p://localhost/chapter2";
pri vate var
conn:NetConnection= new NetConnection();
pri vate var
isConnectSuccess:Boolean= false;
pri vate var
responder:Responder= new Responder(resul tFun);
pri vate
function resul tFun(object:String):void{
trace(object);
resul t.text= object.toStri ng();
}
pri vate
function clickConnect(e:MouseEvent):void{
conn.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
conn.connect(rtm pURL);
}
pri vate
function click(e:MouseEvent):void{
invoke();
}
pri vate
function invoke():void{
if(isConnectSuccess){
conn.cal l ("change",responder,str .text);//change 是服务器端方法名称
}else{
Alert.show(" 还没连接到服务器 ");
}
}
pri vate
function netStatus(e:NetStatusEvent):voi d{
trace(e.info.code);
if(e.info.code= ="NetConnection.Connect.Success"){
isConnectSuccess=true;
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
For Evaluation Only.
作者
:
周英科
email :li _li _li8 7222@163.com.qq:543 246541
5
}
}
]]>
< /m x:Script>
< m x:Button x= "224" y= "175"
label="
调用服务器方法 " click= "thi s.cli ck(event)"/>
<mx:TextInput
x= "129" y= "145" id= "str" wi dth="212"/>
< m x:Label x= "129" y="119" text= " 显示从服务器端返回的字符 " id= "resul t" wi dth= "160"
fontSiz e="12"/>
< m x:Button x= "129" y= "175"
label="
连接服务器 " click= "thi s.cli ckConnect(event)"/>
< /m x:Appli cation>
3. 部署运行程序
进入 red5 的安装目录下的 webapps
下, 复制
test
文件夹, 把复制的文件夹改名为
chapte r2
,
删除 chap ter2\WEB-INF 目录下的文件夹。
把服务器项目下的 cl asses 目录下的文件夹 first 拷贝到 chapter2\WEB-INF 下。
把 red5-web.properti es 中的 /test 替换为 /chapter2 。
把 red5-web.xml 中的 <bean i d="test.servi ce" cl ass="org.red5.server.webap p.test.TestServi ce"
singl eton="true" l azy-init="default" autowi re="default" dependency-check="default" /><bean
i d="echo.servi ce" cl ass="org.red5.sampl es.servi ces.EchoServi ce" singl eton="true" l azy-
init=" default" autowi re="default" dependency-check="default" /> 删除。
把 org.red5.server.webapp.test.Application 替换为 first.Application 。
把 web.xml 中的 <param-value>/test</param-value> 替换为 <param-value>/chapter2</param-
value>
把 <taglib> <taglib-uri >/tl ds/c</taglib-uri ><taglib-location>/WEB-INF/tl ds/c.tld</taglib-location>
</taglib> 删除
注意:
webapps 下的文件夹名 chapter2,red5-web.properti es 中的 chapter2
,
web.xml 中的 chap ter2
要保持相同,如果一个改了,其他的也改成相同的,所有以后的工程都这样。
重新启动 red5
在 fl exbuilder3 中选择运行菜单中的运行项运行 chapter2 。在文本框里输入字符串,点击连
接按钮,然后点击调用方法按钮。上面如果显示出输入框里的字符串的大写表示运行正常。
服务器端类有俩个方法, appConnect 类从 Appli cationAdapter 继承来,当 fl ash
连接时触发,
可以返回 true 或 false 。 True 表示接受客户端的请求 ,fal se 表示拒绝客户端的请求。如果拒绝那么以后
fl ash
和服务器端的交互服务器都不会理会, 所以当想拒绝某些
ip 的请求时只需有在用户连接时检查它的
ip
是否在拒绝 ip 之内,如果在就返回 false ,那样就可以拒之门外了。 change 是自己定义的,客户可以直
接调用的一个远程方法。作用是把客户传入的参数变成大些后返回,此处目的在于运行一个 red5 和 flex
交互的过 程,并没有检查传入的参数是否有大写或都已经是大写。
客户端的代码稍多些,位于 < m x:Script>< ![CDATA[ ]]>< /mx:Script> 之外的是图形界面的
代码,包括俩个按钮,一个输入框,一个显示文本,这就不详细讲解了,注意给按钮添加事件监听器。过
程是这样的,用户点击连接,按钮的监听器 clickConnect
响应,
conn.connect(rtm pURL) 连接到服务
器,在服务器和客户端建立一条信息交流的通道。当这条通道打通时 netStatus 执行,把是否是打通的
开
关 isConnectSuccess 设置为通的。当用户再点击调用按钮时,通过这条通道调用服务器端的方法
c
onn.call("change",responder ,str.text)
。传给服务器字符串
str .text
,当服务器端方法执行完后把返
回值给 responder 定义时的方法 resul tFun ,这样一个客户端与服务器交互的过程完成。
三. 远程调用
通过 red5 服务器端和客户端可以直接通过方法调用来交互,这是非常方便的(想想你在一
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
For Evaluation Only.
- 1
- 2
- 3
- 4
前往页