|
@@ -18,6 +18,7 @@ import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.annotation.PostConstruct;
|
|
import java.io.*;
|
|
import java.io.*;
|
|
|
|
+import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
@@ -381,15 +382,9 @@ public class CameraUtil {
|
|
* @throws IOException
|
|
* @throws IOException
|
|
* @throws InterruptedException
|
|
* @throws InterruptedException
|
|
*/
|
|
*/
|
|
- public void deleteFlvExceed() throws IOException, InterruptedException {
|
|
|
|
|
|
+ public void deleteFlvExceed() throws IOException, InterruptedException, ParseException {
|
|
//字典中设置的值
|
|
//字典中设置的值
|
|
List<SysDictData> sysCameraRecordTime = dictDataMapper.selectDictDataByType("sys_camera_record_time");
|
|
List<SysDictData> sysCameraRecordTime = dictDataMapper.selectDictDataByType("sys_camera_record_time");
|
|
- log.info("sysCameraRecordTime======================================" + sysCameraRecordTime.get(0).getDictValue());
|
|
|
|
- //开启流
|
|
|
|
- List<String> rspList = new ArrayList<String>();
|
|
|
|
- Process proc = Runtime.getRuntime().exec(transcribeFilePath, null, null);
|
|
|
|
- BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
|
|
|
|
- PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
|
|
|
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
@@ -404,49 +399,42 @@ public class CameraUtil {
|
|
calendar.add(Calendar.DAY_OF_YEAR, -45);
|
|
calendar.add(Calendar.DAY_OF_YEAR, -45);
|
|
}
|
|
}
|
|
date = calendar.getTime();
|
|
date = calendar.getTime();
|
|
- //时间格式化为字符串
|
|
|
|
- String formatD = sdf.format(date);
|
|
|
|
- log.info("formatD======================================" + formatD);
|
|
|
|
|
|
|
|
//遍历每个进行视频录制的摄像头
|
|
//遍历每个进行视频录制的摄像头
|
|
File file = new File(transcribeFilePath);
|
|
File file = new File(transcribeFilePath);
|
|
- if (file.exists()) {
|
|
|
|
- String s = HttpUtils.sendGet(transcribeFilePath, null);
|
|
|
|
- if (!StringUtils.isBlank(s) || "null".equals(s)) {
|
|
|
|
- List<Map<String, Object>> maps = JSON.parseArray(s, Map.class);
|
|
|
|
- if (ObjectUtils.isEmpty(maps)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- List<String> commands = new ArrayList<>();
|
|
|
|
- for (Map<String, Object> map : maps) {
|
|
|
|
- Object path = map.get("Path");
|
|
|
|
- log.info("path======================================" + path.toString());
|
|
|
|
- //查出符合条件的视频文件,删掉
|
|
|
|
- if (!ObjectUtils.isEmpty(path)) {
|
|
|
|
- String commit = " rm -rf " + transcribeFilePath + "/" + path.toString() + "/" + formatD + "*";
|
|
|
|
- commands.add(commit);
|
|
|
|
|
|
+ log.info("file.exists()======================================" + file.exists());
|
|
|
|
+ if (file.exists() && file.isDirectory()) {
|
|
|
|
+ //获取文件夹中所有的子文件夹和文件
|
|
|
|
+ File[] files = file.listFiles();
|
|
|
|
+ if (!ObjectUtils.isEmpty(files) && files.length > 0) {
|
|
|
|
+ for (File file1 : files) {
|
|
|
|
+ // file1=/opt/streams/record/flv/34020000001320000167
|
|
|
|
+ if (file1.exists() && file1.isDirectory()) {
|
|
|
|
+ //相机文件
|
|
|
|
+ File[] fs = file1.listFiles();
|
|
|
|
+ if (!ObjectUtils.isEmpty(fs) && fs.length > 0) {
|
|
|
|
+ for (File f : fs) {
|
|
|
|
+ // f=/opt/streams/record/flv/34020000001320000167/20230328_192033_192037-91509173-cd5a-11ed-8a42-fa163e4e1e9f.flv
|
|
|
|
+ //fName=20230328_192033_192037-91509173-cd5a-11ed-8a42-fa163e4e1e9f.flv
|
|
|
|
+ String fName = f.getName();
|
|
|
|
+ String[] split = fName.split("_");
|
|
|
|
+ if (split.length > 0) {
|
|
|
|
+ //20230328
|
|
|
|
+ String s = split[0];
|
|
|
|
+ Date parse = sdf.parse(s);
|
|
|
|
+ long fTime = parse.getTime();
|
|
|
|
+ long dateTime = date.getTime();
|
|
|
|
+ //删除过期文件
|
|
|
|
+ if (fTime < dateTime) {
|
|
|
|
+ f.delete();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 删除
|
|
|
|
- for (String line : commands) {
|
|
|
|
- out.println(line);
|
|
|
|
- log.info("line======================================" + line);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 这个命令必须执行,否则in流不结束。
|
|
|
|
- out.println("exit");
|
|
|
|
- String rspLine = "";
|
|
|
|
- while ((rspLine = in.readLine()) != null) {
|
|
|
|
- System.out.println(rspLine);
|
|
|
|
- rspList.add(rspLine);
|
|
|
|
- }
|
|
|
|
- int i = proc.waitFor();
|
|
|
|
- log.info("执行结果:{}", i);
|
|
|
|
- //关闭流
|
|
|
|
- in.close();
|
|
|
|
- out.close();
|
|
|
|
- proc.destroy();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|