前段时间一直想研究Red5 但是发现网上的很多例子 和配置的方法都跑不通
不知道是我Red5版本问题 还是JDK编译问题
先说下我的环境 JDK1.6 MyEclipse7.5 Red5 0.9.0 windows安装版
安装没什么特别好说的 如果你想设置成服务 就勾上 影响都不大 我一般是手动启动Red5的
先从最基本的 连接开始
先写Java 端 MyEclipse 新建一个Web工程 Path 加入Red5 lib 文件夹下的jar 不过除了 servlet *.jar 和 jsp* .jar 别忘了外面的 red5.jar
新建一个Java 类 一般命名为 Application 让它继承 ApplicationAdapter Java代码如下
public class Application extends ApplicationAdapter {
private Logger log = Red5LoggerFactory.getLogger(Application.class,"myDemo");
private IScope appScope;
private IServerStream serverStream;
public Application(){
log.info("myDemo created");
System.out.println("myDemo created");
}
public boolean appStart(IScope app) {
log.info("myDemo appStart");
System.out.println("myDemo appStart");
this.appScope = app;
return true;
}
public boolean appConnect(IConnection conn, Object[] params) {
log.info("myDemo appConnect");
System.out.println("connect");
return true;
}
public void appDisconnect(IConnection conn) {
log.info("myDemo appDisconnect");
if((this.appScope == conn.getScope()) && (this.serverStream != null)){
this.serverStream.close();
}
super.appDisconnect(conn);
}
}
无非是连接上 打印一些日志 和控制台打印一些字符串
接着是Flex 端
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Red5 Connect Test" creationComplete="appinit()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;
var command:String="rtmp://localhost/myDemo";//这里注意修改地址为你的red5服务器地址
var mync:NetConnection=new NetConnection();
var client1:Object = new Object();
function netStatusHandler(sevt:NetStatusEvent):void{
}
function appinit(){
mync.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
}
function serverConnect():void{
out_txt.text="Connectting ... ...";
client1.clientMethod = this.clientMethod;
mync.client = this.client1;
mync.connect(command);
trace("serverConnect:"+command);
}
]]>
</mx:Script>
<mx:Style>
WindowedApplication
{
background-color:"0xffffff";
background-alpha:"0.5";
}
</mx:Style>
<mx:Label y="100" text="连接状态:未连接" horizontalCenter="0" fontSize="12" fontWeight="normal" id="out_txt" condenseWhite="true" height="150"/>
<mx:Button y="254" label="点击我连接Red5" fontSize="11" fontWeight="normal" horizontalCenter="0" click="serverConnect()"/>
</mx:WindowedApplication>
再来看最关键的配置文件
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>myDemo</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/myDemo</param-value>
</context-param>
<listener>
<listener-class>org.red5.logging.ContextLoggingListener</listener-class>
</listener>
<filter>
<filter-name>LoggerContextFilter</filter-name>
<filter-class>org.red5.logging.LoggerContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoggerContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>rtmpt</servlet-name>
<servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rtmpt</servlet-name>
<url-pattern>/fcs/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>rtmpt</servlet-name>
<url-pattern>/open/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>rtmpt</servlet-name>
<url-pattern>/close/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>rtmpt</servlet-name>
<url-pattern>/send/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>rtmpt</servlet-name>
<url-pattern>/idle/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/streams/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
</web-app>
red5-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.0.xsd">
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/red5-web.properties" />
</bean>
<bean id="web.context" class="org.red5.server.Context"
autowire="byType" />
<bean id="web.scope" class="org.red5.server.WebScope"
init-method="register">
<property name="server" ref="red5.server" />
<property name="parent" ref="global.scope" />
<property name="context" ref="web.context" />
<property name="handler" ref="web.handler" />
<property name="contextPath" value="${webapp.contextPath}" />
<property name="virtualHosts" value="${webapp.virtualHosts}" />
</bean>
<bean id="web.handler" class="org.red5.demos.oflaDemo.Application" />
<bean id="demoService.service" class="org.red5.demos.oflaDemo.DemoService" />
<bean class="org.springframework.scripting.support.ScriptFactoryPostProcessor"/>
</beans>
red5-web.properties
webapp.contextPath=/myDemo
webapp.virtualHosts=*, localhost, localhost:8088, 127.0.0.1:8088
将工程发布到Red5的 webapps 文件夹下 命名为你定义的名字 这里我的是 myDemo
到这里 已经完成最简单的Demo 了
分享到:
相关推荐
"RedAlert3_Uprising_Trainer_1.0.rar" 文件是为这款游戏设计的一个作弊工具,主要功能是帮助玩家在游戏过程中获得优势。 trainer 在游戏领域通常指的是作弊程序或修改器,它能够修改游戏中的特定数值,如资源、...
### IBM Redbook案例研究:AIX与WebSphere在企业基础设施中的集成 IBM Redbook的这份案例研究详尽地探讨了如何在企业级架构中整合IBM的AIX操作系统和WebSphere应用服务器,尤其聚焦于与微软的Active Directory进行...
总的来说,“nbody_red_nbody_”项目为我们提供了一个深入研究Nbody问题和数值模拟技术的平台。通过对“nbody_red.c”源代码的学习和分析,我们可以了解如何利用计算机模拟来解决实际的物理问题,同时也能掌握到数值...
花青素的生物合成与积累是一个复杂的生理生化过程,涉及多个基因和代谢途径。通过遗传定位和分子标记的开发,有助于进一步研究这些基因如何在植物体中调节花青素的合成和分布,进而为改善作物的品质和营养价值提供...
标题《RedTeam Security-Social Engineering Detect and Mitigate-18.pdf》和描述提到了这本书的内容是关于检测和缓解针对公司的针对性网络钓鱼(spearphishing)和物理攻击。通过这些信息,我们可以总结出以下几点...
jbpm,全称是Java Business Process Management,是一款开源的工作流和业务流程管理系统,由Red Hat公司维护。它允许开发者通过模型驱动的方式来设计、执行和管理业务流程,提供了高度灵活且可扩展的流程解决方案。...
5. **单片机与ARM体系结构**:熟悉单片机的基本操作以及ARM架构的特点。 6. **数字电路基础知识**:对于电路设计有一定的了解,有助于更好地理解硬件接口。 7. **ARM+Linux应用程序开发**:在具备了一定的基础之后,...
本 Demo 是作者在学习 jQuery 的过程中积累的成果,旨在帮助初学者更好地理解和应用 jQuery 这一强大的 JavaScript 库。jQuery 以其简洁的语法和丰富的功能,大大简化了 JavaScript 中的 DOM 操作、事件处理、动画...
在这个社区内,消费者不仅可以观看其他人的海外购物笔记心得,还可以在社区共享平台中与笔记发布者进行交流和互动,也可以分享自己的心得体会,从而积累了大量的活跃用户,平台为他们打造了一个共同的兴趣部落。...
心理学家Red Fiedle和他的同事们近期进行的一项研究揭示了智力和经验在不同工作压力和任务类型下的作用。他们收集了智力、经验、表现和工作压力的数据。总体来看,这些变量之间没有明显的联系。无论智商高或低,经验...
对于需要跨平台开发或已经在.NET上积累了大量代码的团队来说,`DotNET.jl`是一个极具价值的工具,可以提升项目的生产力和可维护性。 在这个压缩包文件`DotNET.jl-master`中,包含了`DotNET.jl`库的源代码和其他相关...
FRET探针由两条相邻的探针组成,其中一条探针的5'端标记FAM,另一条的3'端标记Red 640,当探针结合到模板上时,FRET效应产生荧光。这两种探针模式都提供实时信号,提高特异性并减少假阳性。FRET探针发出的是非累积...
- **black tongue coating**:黑色舌苔通常与体内湿寒、血液循环不畅或毒素积累有关。 - **map tongue coating**:地图舌是指舌苔呈现出不规则的剥落区域,可能与消化系统问题或营养不良有关。 - **The white tongue...
Ceph的不断发展和完善,得益于它背后多年的研究和实际应用的经验积累。它的设计目标和实现手段都显示了其在分布式存储领域的先进性和创新性。通过了解和掌握Ceph的各个组件和特性,我们可以更好地利用这个强大的工具...
9. **Oracle Enterprise Linux:完全二进制兼容**:Oracle Enterprise Linux与Red Hat Enterprise Linux完全二进制兼容,这意味着可以在不修改现有应用的情况下迁移至Oracle Linux。 #### 总结 Oracle Unbreakable...
这份报告由易车研究院于2022年3月发布,主要探讨了Z世代(1995-1999年出生)高校毕业生,即毕业后5年以内的购车用户群体,如何塑造新的汽车市场细分领域。报告指出,这个群体拥有共同的特征,如漂族身份、单身状态、...
**解释**:强化学习是一种让智能体通过与环境互动学习如何做出最佳决策的方法。在这个过程中,智能体会采取行动并根据环境反馈进行学习。探索(Exploration)和开发(Exploitation)是强化学习中的两个核心概念。...