EasyDSS RTMP流媒体解决方案之直播录像自动清理方案
本文转自Marvin的博客:
http://blog.csdn.net/marvin1311/article/details/78660592
EasyDSS_Solution直播录像清理
直播录像,可以根据配置将过期的录像清理,支持如下条件:
- 设定自动删除录像的时间,单位(天);
 - 每次启动服务后,一分钟后如果开启清理都会检查清理;
 - 默认设定每天凌晨3点执行检查清理任务;
 - 更新参数设定时,都会会在一分钟内判断执行一次检查清理;
 默认是关闭直播录像清理;
这样可以解决几种场景
(1)凌晨执行,降低资源消耗;
(2)改变参数时检查,可以根据最新参数清理无效录像文件,及时减少空间;
(3)启动服务自动检测,及时减少空间;
下面会讲下操作设定,及相关的一些编码实现;
1. 参数设定
默认参数是0,默认关闭录像清理 
2.相关编码
2.1.定时任务
 setInterval(function() {
        //每分钟执行一次,判读是否到凌晨3点
        if (currentLiveRecordDays != parseInt(global.live_record_days)) {
            //第一次启动后一分钟执行
            currentLiveRecordDays = parseInt(global.live_record_days);
            if (currentLiveRecordDays != 0) {
                removeRecordFile();
            }
        } else {
            if (currentLiveRecordDays != 0) {
                //判读是否达到时间
                if (!isStartRecordRemove && parseInt(util.dateFormat(new Date(), "hh")) == 3) {
                    isStartRecordRemove = true;
                    removeRecordFile();
                }
                if (isStartRecordRemove && parseInt(util.dateFormat(new Date(), "hh")) != 3) {
                    isStartRecordRemove = false;
                }
            }
        }
    }, 60000);
2.2.比较日期,判断是否过期
function isOverdue(yyyyMMdd) {
    var days = currentLiveRecordDays;
    var tNow = new Date().getTime();
    var yyyy = parseInt(yyyyMMdd.substring(0, 4));
    var mm = parseInt(yyyyMMdd.substring(4, 6)) - 1;
    var dd = parseInt(yyyyMMdd.substring(6));
    var tFile = new Date(yyyy, mm, dd).getTime();
    var t = tNow - tFile;
    return t >= days * 3600 * 24 * 1000;
}
2.3.删除录像文件方法
遍历删除文件夹里所有子文件
var deleteFolder = function(path) {
    var files = [];
    if (fs.existsSync(path)) {
        files = fs.readdirSync(path);
        files.forEach(function(file, index) {
            var curPath = path + "/" + file;
            if (fs.statSync(curPath).isDirectory()) {
                deleteFolder(curPath);
            } else {
                fs.unlinkSync(curPath);
            }
        });
        fs.rmdirSync(path);
    }
};
感谢你的阅读,更多内容会不断分享~
获取更多信息
QQ交流群:560148162
WEB:www.easydss.com
Copyright © EasyDSS.com 2012-2017
EasyDSS RTMP流媒体解决方案之直播录像自动清理方案的更多相关文章
- EasyDSS RTMP流媒体解决方案之Windows服务安装方案
		
Windows服务安装 EasyDSS_Solution流媒体解决方案,可以通过start一键启动.在实际应用中,我们希望可以设置成系统服务,那么下面我将会介绍,如何在windows中将流媒体解决方案 ...
 - RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播
		
方案介绍 目前互联网直播的CDN和标准RTMP流媒体服务器通常只能接收RTMP格式的音视频推流.目前市场上有一些自带RTMP推流的摄像机和编码器,可以直接在其rtmp推流配置里面配置推送到RTMP流媒 ...
 - EasyDSS RTMP流媒体服务器基于RTMP拉模式和转推模式搭建公网全平台全终端直播集群的方案
		
近期,我们有一位EasyDSS流媒体用户在需求中提出:如何搭建一个用户量巨大的讲座直播,提供给普通用户免费观看,每天上午和下午分别有几场讲座同时直播,持续几天时间. 推荐方案 ★ 由于甲方是中国移动运 ...
 - EasyDSS RTMP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值
		
之前接触最多的都是EasyNVR,主要针对的都是前端的一些问题.也有接触到一些easydss流媒体服务器. 前端方面的,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是 ...
 - EasyDSS RTMP流媒体服务器是怎样炼成的:Easy而且更加互联网!
		
开发EasyDSS的初衷 自从12年开始做EasyDarwin的时候,当时眼光一直都仅仅局限在安防监控视频这一块,对RTMP没有太大的重视,对于后起之秀HLS更是没有太多关注,然而经历了15直播火热的 ...
 - 编译EasyDSS rtmp流媒体服务器遇到stray '_239' inprogram,stray '_187' inprogram,stray '_191' inprogram的解决办法
		
使用用户提供的交叉编译工具链编译easydss时遇到一个编译错误 stray '\239' inprogram stray '\187' inprogram stray '\191' inprogra ...
 - EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法
		
EasyDSS支持HTTP GET接口访问,我们需要获取url的各种参数信息 比如http://ip:port/action?a=1&b=2&c=3 我们需要知道对应的a.b.c的值 ...
 - EasyDSS RTMP流媒体服务器videojs flash播放RTMP/HLS提示错误的解决方案
		
本文转自EasyDSS团队成员StarIT的博客:http://blog.csdn.net/staritstarit/article/details/73692715 问题 在博客<EasyDS ...
 - EasyDSS RTMP流媒体服务器中调用videojs播放rtmp视频显示在左上角问题
		
本文转自EasyDarwin团队成员Penggy的博客:http://www.jianshu.com/p/f63f5b7c691b 问题描述: 近期我开发了一款新一代的RTMP/HLS流媒体服务器软件 ...
 
随机推荐
- MVC 二级联动 可以试试
			
后台代码,获取数据如下: /// <summary> 2 /// 获取省份 3 /// </summary> 4 public JsonResult GetProvinceli ...
 - python笔记6:模块
			
6. 模块(一个 .py 文件称为一个模块Module) import 语句 类似 _xxx 和 __xxx 这样的 函数/变量 是非公开的(private),不应该被直接引用 函数定义: 外部不需要 ...
 - weblogic内存快速配置
			
# IF USER_MEM_ARGS the environment variable is set, use it to override ALL MEM_ARGS values USER_MEM_ ...
 - RAID 1-6
			
RAID 0 RAID 0亦称为带区集.它将两个以上的磁盘串联起来,成为一个大容量的磁盘.在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最 ...
 - Arduino可穿戴教程认识ArduinoIDE
			
Arduino可穿戴教程认识ArduinoIDE 认识ArduinoIDE Arduino IDE在Windows和Linux平台下除了启动方式之外,其他的使用方式基本是一致的.下面简单介绍一下常用的 ...
 - Jenkins配置MSBuild实现自动部署2(项目实践)
			
继上一篇文章http://www.cnblogs.com/EasonJim/p/6077225.html,大致实现的思路,今天来记录一个真实项目实践. 一.新建项目 选择[构建一个自由风格的软件项目] ...
 - SQLITE3 --详解
			
由于我主要负责我们小组项目数据库模块的部分所以这几天都一直在研究在iphone中最为常用的一个简单数据库sqlite,自己也搜集很多资料,因此在 这里总结一下这几天的学习成果: Sqlite 操作简明 ...
 - getchar()和getch()的区别
			
1.getchar();从键盘读取一个字符并输出,该函数的返回值是输入第一个字符的ASCII码:若用户输入的是一连串字符,函数直到用户输入回车时结束,输入的字符连同回车一起存入键盘缓冲区.若程序中有后 ...
 - java把一个文件的内容复制到另外一个文件
			
/** * java把一个文件的内容复制到另外一个文件 */import java.io.File;import java.io.FileInputStream;import java.io.File ...
 - Sublime3破解教程[转载]
			
sublime text 3 这个IDE相信很多人认识,尤其是python的.相对pycharm ide而言,速度快.界面清爽等优点,下面就分享下各个版本的破解方法 用UltraEdit等编辑器打开s ...