您的位置:首页 > 其它

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插件安装教程



第四部,如果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目录).接着启动服务器,打开推流软件向服务器推流,就可以看到流媒体文件被自动保存到服务器中啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: