EasyDSS RTMP流媒体解决方案之直播录像自动清理方案

本文转自Marvin的博客:
http://blog.csdn.net/marvin1311/article/details/78660592

EasyDSS_Solution直播录像清理

直播录像,可以根据配置将过期的录像清理,支持如下条件:

  1. 设定自动删除录像的时间,单位(天);
  2. 每次启动服务后,一分钟后如果开启清理都会检查清理;
  3. 默认设定每天凌晨3点执行检查清理任务;
  4. 更新参数设定时,都会会在一分钟内判断执行一次检查清理;
  5. 默认是关闭直播录像清理;

    这样可以解决几种场景
    (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

posted @ 2017-11-29 22:19  Babosa  阅读(236)  评论(0编辑  收藏  举报