Red5搭建直播平台

Red5搭建直播平台Red5搭建直播平台

大家好,又见面了,我是你们的朋友全栈君。

下载地址 http://www.red5.org/

1, 首先启动red5

2,访问http://localhost:5080/

3,在该页面点击installer,进入安装页面。或输入http://localhost:5080/installer/

4,安装oflaDemo

5,可能会报错,下面来解决这些基本问题。

5.1,重新编译Application.java

package org.red5.demos.oflaDemo;  
  
import org.red5.logging.Red5LoggerFactory;  
import org.red5.server.adapter.ApplicationAdapter;  
import org.red5.server.api.IConnection;  
import org.red5.server.api.IScope;  
import org.red5.server.api.stream.IServerStream;  
import org.red5.server.api.stream.IStreamCapableConnection;  
import org.slf4j.Logger;  
  
public class Application extends ApplicationAdapter  
{  
  private static Logger log = Red5LoggerFactory.getLogger(Application.class, "oflaDemo");  
  private IScope appScope;  
  private IServerStream serverStream;  
  
  public Application()  
  {  
    log.info("oflaDemo created");  
    System.out.println("oflaDemo created");  
  }  
  
  public boolean appStart(IScope app)  
  {  
    log.info("oflaDemo appStart");  
    System.out.println("oflaDemo appStart");  
    this.appScope = app;  
    return true;  
  }  
  
  public boolean appConnect(IConnection conn, Object[] params)  
  {  
    log.info("oflaDemo appConnect");  
  
    measureBandwidth(conn);  
    if ((conn instanceof IStreamCapableConnection)) {  
      IStreamCapableConnection streamConn = (IStreamCapableConnection)conn;  
      /** 
      SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig(); 
      bwConfig.getChannelBandwidth()[3] = 1048576L; 
 
      bwConfig.getChannelInitialBurst()[3] = 131072L; 
 
      streamConn.setBandwidthConfigure(bwConfig); 
      */  
    }  
  
    return super.appConnect(conn, params);  
  }  
  
  public void appDisconnect(IConnection conn)  
  {  
    log.info("oflaDemo appDisconnect");  
    if ((this.appScope == conn.getScope()) && (this.serverStream != null)) {  
      this.serverStream.close();  
    }  
    super.appDisconnect(conn);  
  }  
}  

5.2,增加所需要的jar文件spring-aop-3.0.5.RELEASE.jaraopalliance-1.0.jar

6,重启Red5,访问路径http://localhost:5080/demos/ofla_demo.html,点击Connect,右侧变绿,出现播放列表。选择播放文件。

7,使用jwplayer,进行测试,书写代码如下

<script type="text/javascript" src="${pageContext.request.contextPath}/player/jwplayer.js"></script>  
  
<div id="myElement"  >Loading the player...</div>  
  
jwplayer("myElement").setup({  
        
        file: "rtmp://localhost/oflaDemo/9.flv",   
        height: 360,  
        image: "${pageContext.request.contextPath}/images/button.gif",  
        width: 640   
});  

正常播放则测试成功。

8,进行二次开发

8.1,先写Java类

package first;  
  
import org.red5.server.adapter.ApplicationAdapter;  
import org.red5.server.api.IConnection;  
import org.red5.server.api.IScope;  
import org.red5.server.api.stream.IServerStream;  
import org.red5.server.api.stream.IStreamCapableConnection;  
  
public class Application extends ApplicationAdapter  
{  
  private IScope appScope;  
  private IServerStream serverStream;  
  
  public Application()  
  {  
  
  }  
  
  public boolean appStart(IScope app)  
  {  
  
    this.appScope = app;  
    return true;  
  }  
  
  public boolean appConnect(IConnection conn, Object[] params)  
  {  
  
  
    measureBandwidth(conn);  
    if ((conn instanceof IStreamCapableConnection)) {  
      IStreamCapableConnection streamConn = (IStreamCapableConnection)conn;  
  
    }  
    return super.appConnect(conn, params);  
  }  
  
  public void appDisconnect(IConnection conn)  
  {  
  
    if ((this.appScope == conn.getScope()) && (this.serverStream != null)) {  
      this.serverStream.close();  
    }  
    super.appDisconnect(conn);  
  }  
}  

8.2 配置red5-web.properties,内容如下

webapp.contextPath=/red58
webapp.virtualHosts=*

8.3 配置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-3.0.xsd  
    http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.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="first.Application" />  
</beans>  

8.4 配置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>red58</display-name>  
  
    <context-param>  
        <param-name>webAppRootKey</param-name>  
        <param-value>/red58</param-value>  
    </context-param>   
    <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>  
 

8.5 在WebContent\streams里放置flv等类型文件

8.6 发布文件,名称为red58

8.7,发布时,删除lib文件夹中的文件

8.8 进行测试。

<script type="text/javascript" src="${pageContext.request.contextPath}/player/jwplayer.js"></script>  
  
<div id="myElement"  >Loading the player...</div>  
  
jwplayer("myElement").setup({  
        
        file: "rtmp://localhost/red58/9.flv",   
        height: 360,  
        image: "${pageContext.request.contextPath}/images/button.gif",  
        width: 640   
});  
 

Js代码  收藏代码
jwplayer().onBeforePlay( function(event){  
            //alert("before Play");   
    });  
   jwplayer().onPlay( function(event){  
        //alert(" Play");  
    });  
   jwplayer().onSeek( function(event){  
        //alert("before Play");  
        alert("seek--position:"+event.position +"---offset :"+event.offset );  
    });   
   jwplayer().onTime( function(event){   
        //this event is fired as the playback position gets updated  
        //alert("onTime--position:"+event.position +"---duration :"+event.duration  );  
    });  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106432.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • J2EE项目系列(三)–Spring Data JPA+Spring+SpringMVC+Maven快速开发(1)项目架构

    J2EE项目系列(三)–Spring Data JPA+Spring+SpringMVC+Maven快速开发(1)项目架构好久没给大家弄Java后端项目系列了,因为接了Java后端外包以及学习一些后端优化的东西。而现在开始慢慢在这个系列的(三)逐渐把后端外包的一些有价值的东西分享给大家,并且自己也总结一遍嘛。本博客是这个系列的第一篇,所以先讲下项目架构。另外,这个系列还有一些我在外包项目过程中做的优化,七牛云,云旺IM等使用,以及解决一些小bug等等技巧。

    2022年6月6日
    30
  • spring cloud 入门系列二:使用Eureka 进行服务治理「建议收藏」

    服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。SpringCloudEureka是SpringCloudNetflix微服务套件的一部分

    2022年2月16日
    38
  • JS刷新当前页面的方法总结

    JS刷新当前页面的方法总结一、刷新页面方法介绍1.reload()该方法强迫浏览器刷新当前页面。语法:location.reload([bForceGet])参数:bForceGet,可选参数,默认为false,从客户端缓存里取当前页。true,则以GET方式,从服务端取最新的页面,相当于客户端点击F5(“刷新”)reload()方法用于重新加载当前文档。如果该方法没有规定参数,…

    2022年7月12日
    17
  • spring-boot-devtools的作用_maven compiler plugin

    spring-boot-devtools的作用_maven compiler plugin文章目录添加SpringBootdevtool依赖默认属性自动重启LiveReload全局配置SpringBootdevtool的使用SpringBoot为我们提供了一个便捷的开发SpringBoot应用程序的环境,同时为了方便我们的开发SpringBoot应用程序,SpringBoot推出了SpringBootdevtool的工具来方便我们更加快速的开发和测试Spri…

    2022年9月28日
    0
  • python 移动文件或文件夹操作

    python 移动文件或文件夹操作目录:1、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法2、文件操作方法大全3、目录操作方法大全————————————————————————————–1、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。1.得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd()2.返回指定目录下的所有文件和目录名:os.li

    2022年5月7日
    283
  • Spring中bean的scope

    Spring中bean的scope

    2021年9月14日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号