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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机病毒的分类

    计算机病毒的分类病毒与木马病毒:指编制或在计算机程序中插入的破坏计算机功能或破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或程序代码。木马:是一种后门程序,被黑客用作控制远程计算机的工具。木马与病毒不同的是,木马不会自我繁殖,并不会刻意地感染其他文件,它的作用就是为黑客打开远程计算机的门户,从而可以让黑客来远程控制计算机,使黑客获取有用的信息。病毒是自动破坏目标计算机,而木马需要人为的去操控…

    2022年5月3日
    47
  • WIN7系统配置maven环境变量「建议收藏」

    WIN7系统配置maven环境变量「建议收藏」1.maven程序包下载地址:maven下载后解压到想要安装的位置,我直接放到C盘下了然后配置他的环境变量新建一个MAVEN_HOME,变量值复制自己的路径黏贴即可:将%MAVEN_HOME%\bin;添加到Path后面按住WIN+R组合键,输入CMD回车,在DOS窗口输入mvn-v测试安装结果,成功后如下图:2.配置maven本地仓库在C盘新建apache-mave…

    2022年6月18日
    84
  • c语言中求字符串的长度的函数_c语言求最大字符串

    c语言中求字符串的长度的函数_c语言求最大字符串在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h(#include<string.h>)因为C语言字符串是以\0结尾表示

    2022年8月4日
    5
  • unity麻将开发视频教程_一屏双人单机手机游戏

    unity麻将开发视频教程_一屏双人单机手机游戏小实习生一枚,刚入门unity,利用一周的时间做了个单机简单的二人小麻将只有java基础,从来没学过C#的我,刚开始很懵逼,但是既然动手做了就开始吧~!先上成品图因为公司都用比较稳定的版本,所以我是从比较老的版本unity4.7上手学习的刚开始学什么都不懂,参考了一个别人写的斗地主demo,所以代码比较累赘…你们可以改良一下二人麻将介绍牌型分为:条

    2022年8月29日
    5
  • pip 卸载包_linux卸载python3

    pip 卸载包_linux卸载python3使用pip卸载模块pipuninstallbagname

    2022年10月10日
    2
  • icp_icp查询

    icp_icp查询输入44 21 2 4 84 0100 99 98 972 210000 100005 30 0 0 0 1696RichmanImpossible代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;int a[N];int main(){ int T; cin>>T; while(T -..

    2022年8月8日
    6

发表回复

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

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