本帖最后由 Snail 于 2012-3-26 13:23 编辑
Red5简介
Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。http://baike.baidu.com/view/993128.htm
Red5安装
安装Red5首先就是要下载了:http://www.red5.org/downloads/,官网中提供了安装版的和压缩版的,我下载的是压缩版的;因为我可以很容易的得到里面的事例,api等;
下载了Red5后,解压文件(结构如图):如图:
常用方法
ApplicationAdapter是客户端与red5连接的基础类:
下面来介绍一下调用的顺序,和建立so的方法:
第一步:
Red5服务器启动后,开始加载,此时只能获取应用的SCOPE - public boolean appStart(IScope arg0) {
- this.createSharedObject(arg0, \\\\\\\\\\\\\\\"point\\\\\\\\\\\\\\\", true);
- ISharedObject so = this.getSharedObject(arg0, \\\\\\\\\\\\\\\"point\\\\\\\\\\\\\\\");//建立一个so
- if (so != null)
- so.addSharedObjectListener(new ShareObjectListener());
- return true;
- }
复制代码 改方法中的ShareObjectListener监听器是一个需要实现ISharedObjectListener接口的类。这样就建立一个so了。
第二步:
响应连接处理,可获取当前connection的信息,并且可以接收客户端提供的参数- public boolean appConnect(IConnection conn, Object[] params){
- return true;
- }
复制代码 第三步:连接成功,此时可获取client信息和SCOPE信息- public boolean appJoin(IClient client, IScope app){
- return true;
- }
- @Override
- public boolean roomStart(IScope arg0) {
- System.out.println(\\\\\\\\\\\\\\\" 启动roomStart\\\\\\\\\\\\\\\");
- return true;
- }
复制代码 如果需要获取每一个room中的客户端连接。- @Override
- public boolean roomConnect(IConnection arg2, Object[] arg1) {
- IScope arg0 = arg2.getScope();
- Set<IClient> i = arg0.getClients();
- for (IClient c : i) {
- callClient(c.getConnections().iterator().next());
- }
- return true;
- }
- public void callClient(IConnection conn) {
- if (conn instanceof IServiceCapableConnection) {
- IServiceCapableConnection sc = (IServiceCapableConnection) conn;
- sc.invoke(\\\\\\\\\\\\\\\"resultFun\\\\\\\\\\\\\\\",new Object[]{peopleArray},this);
- }
- }
复制代码 最后一步:
客户端浏览器关闭即退出应用。- public void appDisconnect(IConnection conn) {
- return;
- }
复制代码
|