- 简介
Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正常运行。
提供red5相关的链接:
下载地址:http://www.red5.org/downloads/
相关实例:http://trac.red5.org/wiki/Examples
相关文档:http://trac.red5.org/wiki/Documentation
- 运行部署实例
- ApplicationAdapter类
//Red5应用程序启动时自动执行此方法 public boolean appStart(IScope arg0)//Red5应用程序停止时自动执行此方法
public void appStop(IScope arg0)
//flex客户端连接项目时自动运行的方法
public boolean appConnect(IConnection arg0, Object[] arg1)
//flex客户端与服务器断开连接时触发的方法
public void appDisconnect(IConnection arg0)
//flex客户端与服务器连接时运行,与appConnect比较类似
public boolean appJoin(IClient arg0, IScope arg1)
//flex客户端与服务器断开时运行,与appDisconnect类似
public void appLeave(IClient arg0, IScope arg1)
- Red5关键API
Red5提供了很多接口供开发人员进行二次开发:
IConnection:连接对象。每个连接都有一个关联的客户端和域。连接可能是持续型、轮询型、或短暂型。建立此接口的目的,是为了给不同的子类,如 RTMPConnection,RemotingConnection,AJAXConnection, HttpConnection 等,提供基础通用的方法。它提供getClient()方法来获取客服端对象。
IScope :每个Red5应用程序至少有一个域,用来搭建处理器、环景、服务器之间的连接。域可以构成树形结构,所有客户端都可以作为其节点共享域内的对象(比如流和数据)。所有的客服端(client)通过连接(connection)连接到域中。对于单一域,每个连接对应一个客服端,每个客服端对应一个id,简单的应用,操作就针对一个id和一个连接进行。
IServiceCapableConnection :获取有效连接。代码中先获取到连接实例,然后判断是否是有效连接并强制类型转换,之后调取客户端相应函数。
IClient :客户端对象代表某单一客户端。一个客户端可以和同一主机下不同的域分别建立连接。客户端对象和HTTP session 很相像。可以使用IClientRegistry.newClient(Object[])方法来创建IClient对象。
ApplicationAdapter:ApplicationAdapter是应用层级的IScope。若要处理流进程,需实现 IStreamAwareScopeHandler接口中的相应处理方法。ApplicationAdapter还提供了有效的事件处理机制,来进行截取流、确认用户等操作。同时,其子类中引入的方法均可在客户端通过 NetConnection 调取。在Aodbe 的FMS 中必须在服务器端维护客户端对象,与之相较,Red5 为您的远程请求提供了更加方便快捷的操作方法。
- 简单实例
//创建NetConnection实例 var netConn:NetConnection = new NetConnection(); //指定rtmp地址,并且向服务器传递一个参数值"hello" netConn.connect("rtmp://localhost/chatroom","hello"); //添加NetStatus事件监听连接 netConn.addEventListener(NetStatusEvent.NET_STATUS,function connStatus(e:NetStatusEvent):void{ switch(e.info.code){ //连接成功 case "NetConnection.Connect.Success": l_connStatus.text = "连接成功"; break; //服务器断开 case "NetConnection.Connect.Closed": l_connStatus.text = "连接断开"; break; //能连上,但被拒绝访问 case "NetConnection.Connect.Failed": l_connStatus.text = "连接拒绝"; break; default: break; } });
command
参数中指定的方法时,这些参数将被传递给该方法/** * 发送消息 * */ protected function sendMsg():void { netConn.call("sendMessage",new Responder(function result():void{ }),uName,txt_msg.text); }
public void sendMessage(String userName,String message){ .... }
new Responder(function result(str:String):void{ .... })
//指定连接client,方便red5调用当前客户端的方法 netConn.client = this;
/** * 【供red5调用的方法】 * 客户端与red5连接时,red5向客户端返回的消息 * */ public function connection_msg(str:String):void{ Alert.show(str); }
public boolean appConnect(IConnection arg0, Object[] arg1) { callClient(arg0,"通知客户端连接成功"); return super.appConnect(arg0, arg1); } /** * Function : red5调用客户端connection_msg方法,返回相应信息 * @author : bless<505629625@qq.com> * @param conn * @param str */ private void callClient(IConnection conn,String str){ if(conn instanceof IServiceCapableConnection){ IServiceCapableConnection sc = (IServiceCapableConnection) conn; sc.invoke("connection_msg", new Object[]{str}); } }
public boolean appConnect(IConnection arg0, Object[] arg1) { //通知其它用户该用户上线 notifyAppConnect(arg0.getScope(),"用户A上线啦"); } /** * Function : 通知其它客户,用户上线信息 * @author : bless<505629625@qq.com> * @param scope */ private void notifyAppConnect(IScope scope,String userName){ //遍历所有链接到服务器的客户端 Collection<Set<IConnection>> col = scope.getConnections(); for (Set<IConnection> set : col) { for (IConnection iConnection : set) { //通知有所客户端上线用户信息 if(iConnection instanceof IServiceCapableConnection){ IServiceCapableConnection sc = (IServiceCapableConnection) iConnection; sc.invoke("otherConnection_msg", new Object[]{userName}); } } } }
public class HelloRed5 extends ApplicationAdapter implements IScheduledJob{ public boolean appStart(IScope arg0) { System.out.println("启动 appStart"); //添加计划任务 this.addScheduledJob(10000, this); return super.appStart(arg0); } /** * IScheduledJob接口实现方法 */ @Override public void execute(ISchedulingService arg0) throws CloneNotSupportedException { //运行定时任务的实际方法 callEvery(this.getScope(),"运行下计划任务..."); } }
相关推荐
为了充分利用Red5,用户可能需要了解一些基础的Java编程和网络编程知识,以便于定制化需求。同时,熟悉RTMP协议和流媒体工作原理也是必要的。总的来说,"red5-server.zip"为个人开发者和企业提供了构建自己的流媒体...
通过这个入门教程,读者将能全面了解Red5的基础知识,掌握如何利用Red5开发流媒体和实时交互应用。虽然不能涵盖所有相关的Java、Flex、Spring和Mina等技术,但它会专注于Red5的核心功能,引导读者快速进入Red5开发的...
Ant用于编译和运行从SVN获取的源代码,Eclipse是开发Red5服务器端的必备工具,JDK则是Red5运行的基础。 3. **配置Eclipse**:将Red5的源代码导入Eclipse,并配置外部工具。创建两个新的Ant构建任务,一个名为`...
在RED5 1.0.6源码中,我们可以深入学习以下几个关键知识点: 1. **RTMP与RTMFP协议**:RED5的核心功能之一就是实现RTMP协议,这是一种用于在网络上进行实时数据传输的协议,主要用于视频流和音频流。RTMFP则是Adobe...
Red5 RTSP视频服务器是一款开源的流媒体服务器软件,它为开发者提供了构建实时通信系统的能力,特别是对于处理视频流有着显著的优势。...无论是个人项目还是商业应用,Red5都能成为你构建视频流基础设施的得力助手。
例如,创建一个名为`org.d5.first`的包,并在其中新建`Application.java`文件,编写基础的RED5应用代码,继承自`ApplicationAdapter`。 7. **配置XML文件**: 修改`WEB-INF`目录下的`red5-web.xml`,将`web.handler`...
3. **Java基础**:由于Red5 Server是用Java编写的,因此熟悉Java编程语言对于管理和自定义Red5 Server的功能至关重要。开发者可以通过Java API来扩展服务器功能,如添加新的应用模块或插件。 4. **分布式架构**:...
本系列教程注重实战,不仅讲解了Red5的基础知识让同学们快速入门,还加入了实战项目力求带领您进入flex,red5结合开发的天堂。 本教程有四大部分组成:第一部分讲项目前预备知识,在线播放器程序全程贯穿,后三个...
以下是关于`oflaDemo`和Red5的一些关键知识点: 1. **Red5服务器**:Red5是一个用Java编写的开源流媒体服务器,能够处理视频、音频流,并支持实时通信。它允许用户创建、录制和播放流媒体内容,适用于在线教育、...
【标题】:“Red5+Flex简单聊天例子”揭示了如何结合使用Red5服务器和Flex前端技术来构建一个基本的在线聊天应用。...同时,这也是一个很好的实践机会,帮助开发者掌握Flex客户端开发和Red5服务器管理的基础知识。
### Red5入门教程知识点解析 #### 一、Red5介绍及安装 1. **Red5概述**:Red5是一款基于Java开发的...通过以上知识点的学习,初学者可以全面了解Red5的核心功能和应用开发流程,为后续深入研究和实践打下坚实的基础。
通过学习和掌握Flex的基础知识以及如何与RED5服务器进行交互,开发者可以构建出适应各种业务场景的富互联网应用,满足在线教育、娱乐、企业协作等多元化需求。无论是初学者还是高级开发者,深入理解Flex和RED5的结合...
本系列教程注重实战,不仅讲解了Red5的基础知识让同学们快速入门,还加入了实战项目力求带领您进入flex,red5结合开发的天堂。 本教程有四大部分组成:第一部分讲项目前预备知识,在线播放器程序全程贯穿,后三个...
RED5多人会议源码主要涉及以下知识点: 1. **RED5架构**:RED5由服务器端和客户端两部分组成。服务器端处理流媒体的发布、播放、录制和存储,而客户端则负责音视频数据的采集、编码、解码和显示。RED5支持多种流...
知识点:在Windows环境下配置、运行RED5源码及AS3连接RED5的简易流程 一、RED5简介与版本更新 RED5是一个开源的、基于Java的媒体服务器,用于流媒体传输,支持RTMP协议,能够实现音视频的实时交互。随着版本的迭代...
首先,我们来了解一下H264编码和RTMP协议的基础知识。 H264,全称High Efficiency Video Coding(高效视频编码),是一种广泛应用于网络视频传输的视频编码标准。它以其高效率和高压缩比著称,能够在有限的带宽下...
学习和理解Red5 demo,你需要掌握以下几个关键知识点: 1. **Red5基础**:了解Red5的基本架构、功能特性以及与Flash Player、HTML5视频的交互方式。 2. **安装与配置**:熟悉在不同操作系统(如Windows、Linux)上...
在本文中,我们将深入探讨...这对于理解RIA(富互联网应用)开发和流媒体技术的基础知识非常有帮助。此外,由于Red5和Flex都是基于开放标准的,因此这些技能也可以应用于其他类似项目,比如在线直播、游戏服务器等。
本系列教程注重实战,不仅讲解了Red5的基础知识让同学们快速入门,还加入了实战项目力求带领您进入flex,red5结合开发的天堂。 本教程有四大部分组成:第一部分讲项目前预备知识,在线播放器程序全程贯穿,后三个...