zoukankan      html  css  js  c++  java
  • red5 视频应用开发指南。第一个项目成功运行经验(1)

      1,一直想做视频,可惜资料不是很多。本来想买北风网的视频,太贵了,网上买了一本书自己看

    第一个项目是连接red5服务器

    第一个项目做了两天,终于成功了。

    2,按照书本的要求一步一步的来发现后面总是出现,NetConnection.Connect.Rejected 拒绝连接

        过程如下 来自:http://412887952-qq-com.iteye.com/blog/1620334

    作者信息:

    QQ: 1473773560

    Email: linxingliang198811@163.com

    说明:有问题可以留言,发邮件!

    版本说明:

           Flex 4 (Flash Build)

           Red5 1.0 

    ------------------------------------------------------—————————————————————————————

    3  Red5 第一个例子之HelloWorld

    3.1 HelloWorld 开发前指导

       不管在学习什么新技术,都离不开HelloWorld ,简单而经典。本技术也不例外,从HelloWorld 步步深入进行研究。在开发之前,先讲讲HelloWorld 的开发流程,主要包括服务端和客服端。Red5 程序主要是在服务端发布一个服务,供其他客户端进行访问,具体的步骤如下:

     Ø  用Eclipse 编写客户端

     Ø  将编写的程序部署发布

     Ø  用Flex 编写客服端

    接下来我们就按照这三大步进行开发。

    3.2 用Eclipse 编写客户端

       Red5 服务端的开发类似于开发一个web project ,所以我们的工程基本上的架构跟web project 一样,需要如下几个文件WEB-IN,classes,web.xml ,lib… 具体的步骤如下:

    ²   用Eclipse 新建一个Java Project

    新建一个Java Project ,取名为Hello_Red5 ,具体的步骤不多说,我想大家这一步都不应该有问题,待会会把整个文件结构放上。

    ²  新建目录文件

    刚才我们已经说了,我们实际开发的应该类似一个web project 才能够进行部署,当然一开始你也可以直接选择web project 。

      l  在根目录下新建WEB-INF 文件夹

           l 在WEB-INF 下新建classes 文件夹

           l  在WEB-INF 下新建lib 文件夹

     新建文件夹的步骤应该是这样的:

    【点击工程】——【右键】——【 New 】——【 Folder 】——【输入文件名称即可】

    现在的文件结构应该是这样的:

    ²  设置字节码存放位置

    我们知道用Eclipse 编写的java 代码默认情况下编译之后的 .class 字节码文件都是存放在bin 目录下,我们需要修改下,让它存放在WEB-INF 下的classes 文件下,具体步骤如下:

    【点击工程】——【右键】——【Build Path 】——【Configure Build Path 】——【在右边选择Source 菜单】——【在右下角就可以看到default outer folder, 点击Browse, 切换到

    WEB-INF/classes 】——【切换完成之后在输入框的值应该是: Hello_Red5/WEB-INF/classes】

      

    关键的操作演示如下:

    ²  编写配置文件

    虽说标题是些编写配置文件,但是其实大部分配置都已经有现成的模板了,只需要你稍微修改下就可以了。那么模板在哪里可以找到呢?其实就在Red5 的安装根目录的/doc/templates/myapp/WEB-INF 下的四个配置文件,

    分别是: log4j.properties ,red5-web.properties ,red5-web.xml ,web.xml 具体都是做什么用的,我们下节在进行讲解,这一节的主要目标是成功部署一个应用程序,细节的东西先不管。找到这几个配置文件之后复制到WEB-INF 目录下。

      

    现在的文件结构应该是这样的:

    ²  导入Red5.jar 文件

    Red5.jar 文件在Red5 安装根目录下。导入步骤:

    【点击工程】——【右键】——【Build Path 】——【Configure Build Path 】——【在右边选择Libraries 菜单】——【点击Add External Jars… 】

       关键步骤演示:

    注:有人导入jar 文件的时候,会选择这样的方式,就是先复制Red5.jar 文件,然后粘贴到lib 目录下,最后在Add Jars…, 这种方式也是可以的,应该来说这种方式还有更好,不

    会由于你改变了Red5 的安装路径就报错了。但是需要你注意的是:当你发布程序到Red5 服务器的时候,需要把lib 包下的Red5.jar 再删除掉,不删除的话是无法部署成功的,不

    然你可以试一试,要是成功的话,也麻烦你告诉我,或许我部署有问题了。那么你肯定会有这样的疑问,我们在开发的时候不是用到Red5.jar 文件里的类库了吗,现在删除了,

    那么它怎么还能运行呢?一开始我也是这么认为的。但是经过自己的各种尝试(谷哥和度娘好像没有查到相关的说明,要是有相关的文档说明的话,麻烦告诉我下。),发现当

    你将程序部署到Red5 进行发布的时候,它是读取了Red5 安装目录下的Red5.jar 的。

    ²  编写代码

    在src 目录下先新建一个包: cn.app, 在新建的包下新建一个类,取名为Application, 代码如下:

    Java代码  
    1. package cn.app;  
    2.    
    3. import org.red5.server.adapter.ApplicationAdapter;  
    4.    
    5. public class Application extends ApplicationAdapter{  
    6.      
    7.     /** 
    8.      * 提供访问的方法,可以写多个,让客服端进行调用. 
    9.      * @param name 
    10.      * @return 
    11.      */  
    12.     public String login(String name){  
    13.        return "Red5 say:Hello,"+name;  
    14.     }    
    15. }  
     

    此java 代码跟普通java 代码没有什么区别,主要是该类继承了

    • org.red5.server.adapter.ApplicationAdapter 类。

      

    现在的文件结构应该是这样的:

    ²  修改WEB-INF 下的配置文件

    我们说配置文件有模板,但是没有不用进行修改的模板吧,所以还是需要你手动的修改下配置文件,但是改动不大,不用担心。

    ²  red5-web.properties 文件

    将 webapp.contextPath=/myapp 修改为:

    webapp.contextPath=/Hello_Red5

    其中Hello_Red5 是你的工程名称。

    webapp.virtualHosts 配置的是虚拟主机地址,在此我们可以不进行修改。

    ²  red5-web.xml

    < bean id ="web.handler"

            class ="the.path.to.my.Application"

           singleton ="true" />

    修改为:

       < bean id ="web.handler"

            class ="cn.app.Application"

           singleton ="true" />

    注:修改的是你自己的class 。

       删除(或者注释掉):

    < bean id ="myhandler.service"

            class ="the.path.to.my.ServiceHandler"

           singleton ="true" />

      

    ²  web.xml

    < context-param >

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

           < param-value > /myapp </ param-value >

        </ context-param >

    修改为:

       < context-param >

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

           < param-value > /Hello_Red5 </ param-value >

        </ context-param >

    注:param-value 指向你的工程名称。

       删除(或者注释):

        < context-param >

            < param-name > log4jConfigLocation </ param-name >

            < param-value > /WEB-INF/log4j.properties </ param-value >

        </ context-param >

    < listener >    

    < listener-class > org.springframework.web.util.Log4jConfigListener

    </ listener-class >

    </ listener >

    < listener >  

    < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >

    </ listener >

    注: ContextLoaderListener 代码是启动Sping 监听器的,按道理是不应该注释掉的,但是不注释掉的话,就会报错。我在网上查找了很多资料,甚至是英文网站都没有相关的说明,我是通过不断的尝试,才知道注释掉能够正常运行。我想应该是Red5 1.0 版本在conf 目录下就应该有启动Spring 监听器了(要是有人有知道的,请联系我)。另外两个主要是Log4j 日志的,要是不注释掉的话,需要加入Log4j.jar 文件。

       至此代码就开发完成了,那么就让我们小休息一会吧。

    温馨提示 :在开发的时候,我们发现每次编译完之后,都需要重新复制工程到Red5/webapps 进行部署,这样很是麻烦,一方面我们可以用ant 进行部署,但是实话说ant 我还真是不会,于是我就采用了偷懒的形式:把Eclipse 的workspace 直接设置到Red5/webapps 下,这样每次更新就是更新了webapps 的数据了。主要还有就是在项目上线的时候,可以把src 下的源码删除了。

    3.3 部署发布程序

       革命尚未成功,我们仍需努力,让我们一起来见证奇迹吧。

    ²  部署程序

    程序的部署还是很简单的,说的直白点就是复制粘贴的过程。将我们编写的Hello_Red5 复制到Red5 的安装目录下的webapps 目录下。

    ²  发布程序

    发布程序就更easy 了,就是启动服务器的过程。进入到Red5 的安装目录,启动Red5.bat 文件。需要的注意的是,有可能之前就启动Red5 服务器了,但是当你重新发布程序的时候,需要你重新再启动。

    ²  测试程序是否发布成功

    本地的话,见文件夹【测试工具】。在网页的见附件,下载附件里的【Red5 用rtmp 是否能够连接工具--Angel 提供】。打开Main.html

    3,书中提到的放在WEB-INF中的log4j.pro...文件,我没有找到,系统可以正常运行

    4,关键在于配置另外的三个文件,和库的引用,记住red5.jar直接引用安装目录下的red5.jar就行了,不用再复制出来,会发生错误

    5,red5-web.xml 中的 <bean id="web.handler" class="org.red5.server.adapter.ApplicationAdapter" />要改成

    <bean id="web.handler" class="com.red5Second.Application" />  com.red5Second.Application是你自己添加的类的包名字

    6测试时可以使用   自带的publisher.html

    并修改location 按下enter ,如果出现netconnection.connect.success则说明服务器搭建成功

    7,也可以使用 来自http://blog.csdn.net/u010724965/article/details/72569930

    red5+java打造直播平台系列 (搭建调测)

    前言:如今各式各样的直播平台,像雨后春笋般冒出来。本系列重零开始,基于RED5为服务器,通过JAVA编写后台实现直播平台一些列主流的功能。 如主播开播,用户观看,送礼物,弹幕等功能。

    本文内容:搭建red5服务器,通过obs客户端输入视频源。实现简单的视频直播框架。先基本了解工程架构大概数据的流向。

    特别要说明的:本文作者也是去探索,我也不知道具体各大直播平台使用的技术。主旨在学习。将自己的想法实现而已。

    大概简易流程图: 
    这里写图片描述

    说明:主播利用OBS采集视频源 将数据传入red5视频服务器。用户通过你的sever(这边是B/S架构,java编写)观看,互动(发送弹幕,送礼物)

    前期准备: 
    1.obs客户端(用于直播流采集发送的软件) 
    2.red5服务器 3.jdk1.8

    废话不多说,开始!

    安装:

    下载obs客户端 地址:https://obsproject.com/download(官方) 
    我使用的是汉化版http://www.pc6.com/softview/SoftView_125851.html 
    red5地址:https://github.com/Red5/red5-server

    OBS安装 直接双击安装即可 
    red5安装(window)

    打开上面的下载地址 找到如下图 
    这里写图片描述

    这里写图片描述

    下载下来双击即可 启动找到安装目录,此目录是不是很像tomcat,没错 red5就是基于tomcat容器启动的 直接双击red.bat启动 
    这里写图片描述

    这里写图片描述

    配置:

    打开obs,添加采集数据源。这边你也可以填加摄像头等。我这边添加的是窗口。 
    然后在来源右击

    这里写图片描述

    点击设定 
    设置播放路径/串流码(如果存在) cat (可以理解为一个流的名字) 
    这里写图片描述

    fms:rtmp://127.0.0.1/live (live为一个red5的工程,下载的版本中都会有)

    设置REd5 看是否能接受到 
    这里写图片描述

    点击play

    在OBS中点击串流,意思就是往red5中发送视频数据了,这个时候在live中的实例可以看到效果 那么整个流程就通了 。

    这里写图片描述

    也就是说OBS采集的数据 可以发送到red5的live实例。然后在red5中能够看到视屏流的效果展示。 
    接下来我们要做的就是写自己的APP server 替代red5自带的live实例。在我们的app添加一些发送礼物弹幕等功能也是直播的核心内容。后续章节就开始写我们自己的APP 也是最有趣的地方。

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/kbqLibrary/p/7777136.html
Copyright © 2011-2022 走看看