`
baobeituping
  • 浏览: 1068741 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Red5学习笔记(2)

阅读更多

研究完red5的demo之后,我们可以手动写个小例子,试试连接red5。

        准备步骤,打开MyEclipse和Flex Builder。MyEclipse做一个web工程,写一个简单的Java文件

 

 

Java代码 复制代码
  1. package org.red5.test;   
  2.   
  3. import org.red5.server.adapter.ApplicationAdapter;   
  4. import org.red5.server.api.IClient;   
  5. import org.red5.server.api.IConnection;   
  6. import org.red5.server.api.IScope;   
  7.   
  8. public class Application extends ApplicationAdapter {   
  9.     private IScope app = null;   
  10.   
  11.     public boolean appStart(IScope __app) {   
  12.         app = __app;   
  13.         super.appStart(app);   
  14.         return true;   
  15.     }   
  16.   
  17.     @Override  
  18.     public synchronized boolean connect(IConnection conn, IScope scope, Object[] params) {   
  19.         System.out.println("connect");   
  20.         IClient client = conn.getClient();   
  21.         String uid = client.getId();   
  22.         System.out.println("connect->uid:" + uid);   
  23.         System.out.println("welcome to red5 world !");   
  24.         return true;   
  25.     }   
  26.   
  27. }  
package org.red5.test;

import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;

public class Application extends ApplicationAdapter {
	private IScope app = null;

	public boolean appStart(IScope __app) {
		app = __app;
		super.appStart(app);
		return true;
	}

	@Override
	public synchronized boolean connect(IConnection conn, IScope scope, Object[] params) {
		System.out.println("connect");
		IClient client = conn.getClient();
		String uid = client.getId();
		System.out.println("connect->uid:" + uid);
		System.out.println("welcome to red5 world !");
		return true;
	}

}

     然后将整个WebRoot 拷贝到red5目录下面的webapps,然后在WEB-INF目录下补充上 red5-web.xml 和 red5-web.properties 文件,将red5-web.xml 里面的修改为

 

 

Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>  
  4.        
  5.     <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  6.         <property name="location" value="/WEB-INF/red5-web.properties" />  
  7.     </bean>  
  8.        
  9.     <bean id="web.context" class="org.red5.server.Context"    
  10.         autowire="byType" />  
  11.        
  12.     <bean id="web.scope" class="org.red5.server.WebScope"  
  13.          init-method="register">  
  14.         <property name="server" ref="red5.server" />  
  15.         <property name="parent" ref="global.scope" />  
  16.         <property name="context" ref="web.context" />  
  17.         <property name="handler" ref="web.handler" />  
  18.         <property name="contextPath" value="${webapp.contextPath}" />  
  19.         <property name="virtualHosts" value="${webapp.virtualHosts}" />  
  20.     </bean>  
  21.   
  22.     <bean id="web.handler"    
  23.         class="org.red5.test.Application"    
  24.         singleton="true" />  
  25.   
  26. </beans>  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	
	<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.test.Application" 
		singleton="true" />

</beans>

 

然后修改web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
   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"
   version="2.4">

 <display-name>Red5App</display-name>
 
 <context-param>
  <param-name>Red5App</param-name>
  <param-value>/red5_app2</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>
     <display-name>SecurityTest</display-name>
     <servlet-name>SecurityTest</servlet-name>
     <servlet-class>org.red5.demos.oflaDemo.SecurityTest</servlet-class>
    </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>
 <!--
 <servlet-mapping>
  <servlet-name>SecurityTest</servlet-name>
  <url-pattern>/securitytest</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,没有错误可以说明部署成功了。

 

开发一个客户端去连接red5,可以使用Flex 工具编写,不管你是做Web application 还是 Desktop application其实都一样。代码:

 

Xml代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  
  3.     <mx:Script>  
  4.        <![CDATA[  
  5.        import flash.display.Sprite;  
  6.         import flash.events.NetStatusEvent;  
  7.         import flash.events.SecurityErrorEvent;  
  8.         import flash.media.Video;  
  9.         import flash.net.NetConnection;  
  10.         import flash.net.NetStream;  
  11.         import flash.events.Event;  
  12.       
  13.         
  14.        var command:String="rtmp://192.168.61.115:1935/red5_app";//这里注意修改地址为你的red5服务器地址  
  15.        var mync:NetConnection=new NetConnection();  
  16.         
  17.        function netStatusHandler(sevt:NetStatusEvent):void{  
  18.         var str="_____________________netStatusHandler_____________________\n";     
  19.         str+="code:"+sevt.info.code+"\n";  
  20.         str+="level:"+sevt.info.level+"\n";  
  21.          
  22.         if(sevt.info.application!=undefined){  
  23.          str+="application:"+sevt.info.application+"\n";  
  24.         }  
  25.          
  26.         if(sevt.info.description!=undefined){  
  27.          str+="description:"+sevt.info.description+"\n";  
  28.          out_txt.text=str;  
  29.         }      
  30.        }  
  31.       
  32.         
  33.        function appinit(){  
  34.           
  35.         mync.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);  
  36.  
  37.        }  
  38.         
  39.        function serverConnect():void{  
  40.         appinit();  
  41.         out_txt.text="Connectting ... ...";  
  42.         mync.connect(command,true);  
  43.         trace("serverConnect:"+command);  
  44.        }  
  45.         
  46.        ]]>  
  47.     </mx:Script>  
  48.   
  49.     <mx:Style>  
  50.        WindowedApplication   
  51.        {   
  52.         background-color:"0xffffff";   
  53.         background-alpha:"0.5";   
  54.        }   
  55.     </mx:Style>  
  56.   
  57.     <mx:Label y="100" text="连接状态:未连接" horizontalCenter="0" fontSize="12" fontWeight="normal" id="out_txt" condenseWhite="true" height="150"/>  
  58.     <mx:Button y="254" label="点击我连接Red5" fontSize="11" fontWeight="normal" horizontalCenter="0" click="serverConnect()"/>  
  59. </mx:Application>  
分享到:
评论

相关推荐

    red5 学习笔记 随便写的一些东西

    red5 学习笔记 随便写的一些东西,没多大用,有点乱,看着下载吧。

    red hat linux 9讲义及学习笔记(基础)

    **Red Hat Linux 9 讲义及学习笔记(基础)** Red Hat Linux 9 是一款历史悠久的开源操作系统,它是基于Linux内核的发行版,专为服务器和工作站环境设计。这款系统以其稳定性、安全性和易用性而备受赞誉,尤其适合...

    Javajdk5学习笔记

    以下是对"Javajdk5学习笔记"中可能包含的知识点的详细解析: 1. **自动装箱与拆箱**:JDK 5引入了自动装箱和拆箱功能,使得基本类型和它们对应的包装类之间可以无缝转换,提高了代码的简洁性。例如,`Integer i = ...

    良葛格JDK5学习笔记

    **良葛格JDK5学习笔记** 在Java编程领域,JDK5是一个重要的里程碑,它引入了许多创新特性,极大地提升了开发效率和代码质量。本文将深入探讨这些关键知识点,为初学者提供一个全面的JDK5学习指南。 一、自动装箱与...

    兄弟连linux教程1-16章学习笔记(全)

    2. **CentOS介绍**:CentOS是Linux发行版之一,它是基于Red Hat Enterprise Linux的克隆版本。CentOS因其稳定性和企业级特性而受到欢迎,是初学者学习Linux的理想选择。 3. **学习笔记结构**:教程按照章节顺序展开...

    GlusterFS学习笔记.docx

    GlusterFS 学习笔记 GlusterFS 是一种开源的分布式文件系统,它可以将多个硬盘组合成一个大型存储系统,提供高性能、可扩展性和高可用性的存储解决方案。下面是 GlusterFS 的一些重要知识点: 1. Raid 概念 Raid...

    css经典学习笔记.zip

    《CSS经典学习笔记》 CSS(Cascading Style Sheets)是网页设计中不可或缺的一部分,它负责定义网页内容的样式和布局。本学习笔记将深入探讨CSS的核心概念、选择器、盒模型、布局方式以及响应式设计等多个方面,...

    Java JDK 5.0学习笔记

    本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java 5.0引入了泛型,它允许在定义类、接口和方法时指定类型参数,从而实现类型安全的集合。泛型消除了强制类型转换的需要,...

    qt 学习笔记 qt学习笔记

    ### Qt学习笔记知识点详解 #### 一、从Hello Qt开始 **知识点1:Qt程序的基本结构** - **头文件引入**: - 第1行和第2行代码中,`#include &lt;QApplication&gt;` 和 `#include &lt;QLabel&gt;` 是引入Qt中的两个类:`...

    ggplot2学习笔记

    ### ggplot2学习笔记知识点详解 #### 一、ggplot2简介与基本使用 ggplot2是R语言中一个强大的图形绘制包,它基于“Grammar of Graphics”(绘图语法)理论,允许用户通过组合不同的图形元素来创建复杂的统计图表。...

    Red5研究学习(1)

    Red5是一款开源的流媒体服务器,它基于几个关键的技术组件构建,包括Jetty、Mina和...通过对Red5的学习和研究,我们可以深入了解流媒体服务的运作机制,并掌握如何利用这些工具来满足各种复杂的在线视频和音频需求。

    Linux 学习笔记 (强烈推荐)

    这份“Linux学习笔记”涵盖了多个关键主题,旨在帮助初学者及进阶用户深入理解和掌握Linux系统。 《Linux一句话精彩问答.doc》可能包含了一系列关于Linux日常使用、命令行操作、系统管理等方面的简洁问答,比如如何...

    HTML基础学习笔记

    在“HTML基础学习笔记”中,我们可以深入理解HTML的基本结构、样式控制、超链接、图像和表格的使用,以及列表的创建。 首先,HTML的基本结构由`&lt;html&gt;`、`&lt;head&gt;`和`&lt;body&gt;`三个主要部分组成。`&lt;html&gt;`是整个文档的...

    Linux Raid 5 扩容学习笔记(精排编目)

    ### Linux RAID 5 扩容学习笔记 #### 一、概览 本文档是一份针对Linux环境下RAID 5配置与动态扩容的学习笔记。主要内容包括如何动态地向现有的RAID 5组中添加新的硬盘、如何对新硬盘进行格式化并将其加入到RAID 5...

    Redhat Enterprise linux5学习笔记

    ### Redhat Enterprise Linux 5 学习笔记知识点总结 #### 一、Linux系统介绍与安装 **1. Linux的历史背景与发展** - **UNIX系统的诞生**:1970年,贝尔实验室的两位科学家发明了UNIX系统,这标志着现代操作系统的...

    html和css学习笔记

    ### HTML与CSS学习笔记 #### 一、基础知识概述 HTML(HyperText Markup Language)与CSS(Cascading Style Sheets)是构建网页的基础技术。通过学习HTML与CSS,我们可以创建结构化且美观的网页。 - **WWW (World ...

    韩顺平linux学习笔记

    韩顺平 Linux 学习笔记 本学习笔记涵盖了 Linux 的基础知识、Samba 服务的搭建、Web 项目的开发和发布等内容。学习笔记分为多个阶段,从基础的 Linux 平台开发到高级的 Unix 环境编程,并涉及到 Linux 应用系统开发...

Global site tag (gtag.js) - Google Analytics