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  );  
    });  

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 什么是SVN「建议收藏」

    什么是SVN「建议收藏」SVN:subversion子级版本(子级源代码版本控制管理软件)svn:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (r

  • POJ 2142 The Balance(扩展欧几里德解方程)

    POJ 2142 The Balance(扩展欧几里德解方程)

  • 用户权限表设计_数据库权限表设计7张表

    用户权限表设计_数据库权限表设计7张表用户管理权限设计一直是大家讨论的热点,因为几乎涉及到每一个开发的业务系统。我找了很多很多的资料,大家的核心基本上都是一样的:基于角色管理.用户,角色,模块,权限的相互组合,就可以形成一个强大的权限管理系统。最近在一个项目中设计的一个用户权限的设计,很乐意与大家一起讨论及分享.设计思路我的设计思路或者说是我想要实现的功能1.用户的权限通过角色来控制,一个用户可以拥有多个角

  • 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解[通俗易懂]

    详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解[通俗易懂]声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。本文作者:nebulaf91本文原始地址:最大似然估计(Maximumlikelihoodestimation,简称MLE)和最大后验概率估计(Maximumaposterioriestimation,简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很

  • windows错误恢复如何解决_0xc0000006是什么错误

    windows错误恢复如何解决_0xc0000006是什么错误0xc0000005三种不同的情况下会发生错误常见原因修复访问错误解决方案1:停用程序的数据执行保护(DEP)解决方案2:在Windows注册表中停用AppInit_DLLs机制解决方案3:执行恶意软件扫描解决方案4:运行Windows内存诊断程序并替换任何有缺陷的RAM启动应用程序时如何解决0xc0000005错误解决方案1:更新设备驱动程序解决方案2:修复BCD文件安装Windows时出现0xc0000005错误:最佳解决方案解决方案1:删除并重新创建Windows硬盘分区解决方案2:更换有缺陷的硬件

  • windows7安装pycharm_pycharm安装教程2019

    windows7安装pycharm_pycharm安装教程2019配置:win7+cuda8.0+vs2015+cudnn6.0+python3.5+tensorflow1.4+pycharm大体思路是:先安装vs2015 再将cudnn6.0的bin路径加入环境变量,再安装tensorflow1.4,再安装pycharm (1)   安装vs2015 + cuda8.0     这一步跟安装其他vs版本一样,安

发表回复

您的电子邮箱地址不会被公开。

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