流媒体传输知识整理(六)

来源:互联网 发布:存活的数据叫删失数据 编辑:程序博客网 时间:2024/06/05 08:18

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Red5Test</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <context-param>

    <param-name>webAppRootKey</param-name>

    <param-value>/Red5Test</param-value>

  </context-param>

  <!--

 <context-param>

       <param-name>parentContextKey</param-name>

       <param-value>default.context</param-value>

    </context-param>

 

    <context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>WEB-INF/classes/*-web.xml</param-value>

    </context-param>

 

    <listener>

        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

    </listener>

 

    <servlet>

       <servlet-name>gateway</servlet-name>

       <servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class>

       <load-on-startup>1</load-on-startup>

    </servlet>

 

    <servlet>

       <servlet-name>rtmpt</servlet-name>

       <servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class>

       <load-on-startup>2</load-on-startup>

    </servlet>

 

    <servlet-mapping>

       <servlet-name>gateway</servlet-name>

       <url-pattern>/gateway</url-pattern>

    </servlet-mapping>

 

    <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>/idle/*</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>/close/*</url-pattern>

    </servlet-mapping>

 

    <security-constraint>

       <web-resource-collection>

           <web-resource-name>Forbidden</web-resource-name>

           <url-pattern>/WEB-INF/*</url-pattern>

       </web-resource-collection>

       <auth-constraint />

    </security-constraint>

 

    <security-constraint>

       <web-resource-collection>

           <web-resource-name>Forbidden</web-resource-name>

           <url-pattern>/persistence/*</url-pattern>

       </web-resource-collection>

       <auth-constraint />

    </security-constraint>

 -->

    <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>

(3)  流媒体文件存放路径

WebContentstreams文件夹中。

 

(4)  注意

web工程所需要的red5 jar包需全部导入来自red5安装目录下的lib包,还有根目录下的red5.jar,切不可直接拷贝到lib目录下。项目建立后,打成war包,放到流媒体服务器下的webapps目录下。


客户端代码设计

(1)  测试与服务器端通信情况(字符串的交互)

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

                layout="absolute" fontSize="12"

                width="600" height="400">

<mx:Script>

<![CDATA[

    import mx.controls.Alert;

    private var rtmpURL:String="rtmp://localhost/Red5Test";

    private var conn:NetConnection=new NetConnection();

    private var isConnectSuccess:Boolean=false;

    private var responder:Responder=new Responder(resultFun);

    private function resultFun(object:String):void{

        trace(object);

        result.text=object.toString();

    }

    private function clickConnect(e:MouseEvent):void{

        conn.addEventListener(NetStatusEvent.NET_STATUS,netStatus);

        conn.connect(rtmpURL);

    }

    private function click(e:MouseEvent):void{

        invoke();

    }

    private function invoke():void{

        if(isConnectSuccess){

            conn.call("getit",responder,str.text);//getit 是服务器端方法名称

        }else{

            Alert.show("还没连接到服务器");

        }

    }

    private function netStatus(e:NetStatusEvent):void{

        trace(e.info.code);

        if(e.info.code=="NetConnection.Connect.Success"){

            isConnectSuccess=true;

        }

    }

]]>

</mx:Script>

<mx:Button x="224" y="175" label="调用服务器方法" click="this.click(event)"/>

<mx:TextInput x="129" y="145" id="str" width="212"/>

<mx:Label x="129" y="119" text="显示从服务器端返回的字符" id="result" width="160" fontSize="12"/>

<mx:Button x="129" y="175" label="连接服务器" click="this.clickConnect(event)"/>

</mx:Application>

 


0 0
原创粉丝点击