本文转自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

最新文章

  1. [BootStrap] 富编辑器,基于wysihtml5
  2. Python字符串str的方法使用
  3. 每日会议<第二天>
  4. mongoDB 入门指南、示例
  5. Qt 控件
  6. HDU 2802 F(N)(简单题,找循环解)
  7. mysql 子查询优化
  8. 认识ionic2
  9. Jmeter之接口测试
  10. react 粗略使用
  11. BZOJ5010 FJOI2017矩阵填数(容斥原理)
  12. Linux虚拟机上安装redis
  13. 使用Java线程并发库实现两个线程交替打印的线程题
  14. EZ 2018 05 01 NOIP2018 模拟赛(十一)
  15. 玩转laravel5.4的入门动作(一)
  16. BZOJ 2342: 【SHOI2011】 双倍回文
  17. 把TextView中的文字添加阴影效果及Style的使用 mono版
  18. linux内核图形配置疑难解决
  19. PHP数组函数 array_multisort() ----对多个数组或多维数组进行排序
  20. python 字典 dict items values keys

热门文章

  1. mysql中文乱码的解决方法
  2. 第十三届北航程序设计竞赛决赛网络同步赛 B题 校赛签到(建树 + 打标记)
  3. MapReduce1 工作机制
  4. Data structure basics - Java Implementation
  5. Jenkins集成java非maven/ant项目的打包思路
  6. [js]数组栈和队列操作
  7. lock与monitor的区别
  8. MFC中 CString转换为char
  9. GlusterFS分布式文件系统高速管理
  10. 微信小程序 - 非Form数据怎么发送到后端?