red5+adobe flash media live(或OBS) +酷播播放器实现简单的直播及回看(四)------怎样在服务端存储直播流
2018-01-09 12:49
447 查看
本篇文章来讨论解决如何在red5服务器端存储直播流
问题简述:
一开始在设计直播回放系统的时候,计划的视频存储是通过推流软件,但使用推流软件只能够把直播流存储在本地,不能够在服务器端存储,这样就会造成回看视频不存在的问题.一开始我把服务器设在本机,把文件存储路径设为/live/streams里(流媒体服务器存储视频文件或flash播放器拉取视频流都会自动从app根目录里的streams文件夹中读取),直播及回看都可以实现,但如果把服务器放在远端,存储的视频文件无法直接保存在服务器.也就是服务器上根本没有我们需要的直播录像文件.
问题的解决
解决这个问题需要我们自己写一个red5的服务端程序.在编写前需要一些必要的准备.
首先你需要由jdk,如果你之前已经配置好了red5服务器并能够正常启动,那么你的计算机上应该已经存在jdk.
第二步,想要写red5应用程序我们还需要下载eclipse,直接去官网下载即可,注意要下载JEE版本,不要下载JSE版本.下载eclipse
第三步,想要开发red5应用程序我们需要下载red5 plugin 这是red5为eclipse准备的开发插件.red5插件安装教程
![](https://img-blog.csdn.net/20180107092358692?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
第四部,如果red5 plugin安装成功,在动态web项目的runtime选项卡中可以看见如下图所示的red5 server runtime
![](https://img-blog.csdn.net/20180107092130694?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击next,得到如下页面:
![](https://img-blog.csdn.net/20180107092726084?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
选择你自己的red5目录,注意后面在运行red5项目时还会让你选择red5的启动文件及终止文件的位置,也要在计算机上相应的位置上定位(red5根目录下的对应脚本文件),这里不再赘述.
点击next/finish后我们就可以建立一个red5项目,接下来我们就可以开发自己的red5项目了.先来看一下red5项目的结构:
![](https://img-blog.csdn.net/20180107093226391?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
默认的字节码便宜路径在build中,我建议在WEB-INF文件夹中新建一个classes文件夹用来存放字节码.图中画横向的Application.java就是我们要改动的文件.
下面我们打开Application.java文件
![](https://img-blog.csdn.net/20180109122927109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
里面有一个application类,这个类继承了red5的一个类,webapp连接到server时就是进入该类
我们需要修改的是这个类中的streamPublishStart方法
![](https://img-blog.csdn.net/20180109123145605?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
-其他方法可以自行查看,后面也会写一篇文对主要方法做个简介.
-可以看到streamPublishStart有接收一个 IBroadcastStream类型的参数,该参数存有我们向server推送的直播流的相关信息,我们再方法体内输入”stream.”,效果如下:
![](https://img-blog.csdn.net/20180109123701386?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQxOTQ0Nzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
-其中saveAs方法就是我们需要的方法, 此方法会将流存储到流媒体服务器根目录下的streams文件夹里,第一个参数是文件名称,第二个参数是布尔类型,默认false即可,如:
写好后保存项目,将项目部署到red5服务器中(与tomcat部署方法相同,拷贝到webapps目录).接着启动服务器,打开推流软件向服务器推流,就可以看到流媒体文件被自动保存到服务器中啦!
问题简述:
一开始在设计直播回放系统的时候,计划的视频存储是通过推流软件,但使用推流软件只能够把直播流存储在本地,不能够在服务器端存储,这样就会造成回看视频不存在的问题.一开始我把服务器设在本机,把文件存储路径设为/live/streams里(流媒体服务器存储视频文件或flash播放器拉取视频流都会自动从app根目录里的streams文件夹中读取),直播及回看都可以实现,但如果把服务器放在远端,存储的视频文件无法直接保存在服务器.也就是服务器上根本没有我们需要的直播录像文件.
问题的解决
解决这个问题需要我们自己写一个red5的服务端程序.在编写前需要一些必要的准备.
首先你需要由jdk,如果你之前已经配置好了red5服务器并能够正常启动,那么你的计算机上应该已经存在jdk.
第二步,想要写red5应用程序我们还需要下载eclipse,直接去官网下载即可,注意要下载JEE版本,不要下载JSE版本.下载eclipse
第三步,想要开发red5应用程序我们需要下载red5 plugin 这是red5为eclipse准备的开发插件.red5插件安装教程
第四部,如果red5 plugin安装成功,在动态web项目的runtime选项卡中可以看见如下图所示的red5 server runtime
点击next,得到如下页面:
选择你自己的red5目录,注意后面在运行red5项目时还会让你选择red5的启动文件及终止文件的位置,也要在计算机上相应的位置上定位(red5根目录下的对应脚本文件),这里不再赘述.
点击next/finish后我们就可以建立一个red5项目,接下来我们就可以开发自己的red5项目了.先来看一下red5项目的结构:
默认的字节码便宜路径在build中,我建议在WEB-INF文件夹中新建一个classes文件夹用来存放字节码.图中画横向的Application.java就是我们要改动的文件.
下面我们打开Application.java文件
里面有一个application类,这个类继承了red5的一个类,webapp连接到server时就是进入该类
我们需要修改的是这个类中的streamPublishStart方法
-其他方法可以自行查看,后面也会写一篇文对主要方法做个简介.
-可以看到streamPublishStart有接收一个 IBroadcastStream类型的参数,该参数存有我们向server推送的直播流的相关信息,我们再方法体内输入”stream.”,效果如下:
-其中saveAs方法就是我们需要的方法, 此方法会将流存储到流媒体服务器根目录下的streams文件夹里,第一个参数是文件名称,第二个参数是布尔类型,默认false即可,如:
try { stream.saveAs(stream.getPublishedName(), false); } catch (Exception e) { e.printStackTrace(); }
写好后保存项目,将项目部署到red5服务器中(与tomcat部署方法相同,拷贝到webapps目录).接着启动服务器,打开推流软件向服务器推流,就可以看到流媒体文件被自动保存到服务器中啦!
相关文章推荐
- red5+adobe flash media live(或OBS) +酷播播放器实现简单的直播及回看(三)------简单分析直播及回放系统的设计
- red5+adobe flash media live +酷播播放器实现简单的直播及回看(一)------red5的安装及启动
- red5+adobe flash media live +酷播播放器实现简单的直播及回看(二)------使用media live encoder向red5服务器推流
- NIO实现的服务端与客户端之间的简单通信
- 实现一个简单的服务端推送方案-实例篇Push
- nodejs socket实现的服务端和客户端简单通信
- 怎样用jquery实现快速的全选全不选,超简单
- 一个简单的oracle分页存储过程的实现和调用
- win32汇编实现一个简单的TCP服务端程序(WinSock的简单认知应用)
- android客户端和servlet服务端的简单登录实现
- 实现一个简单的服务端推方案
- 简单的实现了将Session的数据存储在Access中
- c#实现简单的即时通讯(1)----服务端
- 如何实现简单粗暴靠谱的直播抓娃娃方案
- oracle 最简单的学习笔记,增删改查,PLSQL基本语法,游标,函数,存储过程的实现
- NIO实现的服务端与客户端之间的简单通信
- 【数据结构之线性表顺序存储】简单的数组的方式实现
- 使用socket实现简单的客户端和服务端通信(C#语言)
- Azure媒体服务 + OBS + CDN加速实现视频直播
- HTML5 Web SQL实现简单的增删改查websql使用方法vue2.0使用websql实现浏览器存储