| | |
| | | */ |
| | | private ResourceInfo createResourceInfoFromFile(File file, Date startDate, Date endDate) { |
| | | try { |
| | | // 从文件名或文件修改时间获取文件时间 |
| | | // 这里假设文件名包含时间戳,或者使用文件修改时间 |
| | | Date fileDate = new Date(file.lastModified()); |
| | | // 从文件名中提取时间戳(格式:h264_1234567890123.h264) |
| | | String fileName = file.getName(); |
| | | Date startTimeFromFileName = null; |
| | | |
| | | if (fileName.startsWith("h264_") && fileName.endsWith(".h264")) { |
| | | try { |
| | | // 提取文件名中的时间戳(h264_ 和 .h264 之间的部分) |
| | | String timestampStr = fileName.substring(5, fileName.length() - 5); // 去掉 "h264_" 和 ".h264" |
| | | long timestamp = Long.parseLong(timestampStr); |
| | | startTimeFromFileName = new Date(timestamp); |
| | | } catch (NumberFormatException e) { |
| | | Timber.w("Failed to parse timestamp from filename: %s", fileName); |
| | | } |
| | | } |
| | | |
| | | // 如果无法从文件名解析时间戳,则使用文件修改时间作为开始时间 |
| | | if (startTimeFromFileName == null) { |
| | | startTimeFromFileName = new Date(file.lastModified()); |
| | | } |
| | | |
| | | // 结束时间使用文件修改时间 |
| | | Date endTimeFromFile = new Date(file.lastModified()); |
| | | |
| | | // 检查文件时间是否在指定范围内 |
| | | if (fileDate.before(startDate) || fileDate.after(endDate)) { |
| | | // 开始时间应该 >= startDate,结束时间应该 <= endDate |
| | | // 如果文件的开始时间在范围内,或者结束时间在范围内,或者文件时间范围包含查询范围,则包含该文件 |
| | | if (startTimeFromFileName.after(endDate) || endTimeFromFile.before(startDate)) { |
| | | return null; // 不在时间范围内 |
| | | } |
| | | |
| | |
| | | // 逻辑通道号(默认值,实际应从配置获取) |
| | | resourceInfo.setLogicalChannelNumber((byte) 1); |
| | | |
| | | // 开始时间和结束时间(使用文件修改时间) |
| | | // 开始时间:从文件名中的时间戳 |
| | | SimpleDateFormat bcdFormat = new SimpleDateFormat("yyMMddHHmmss", Locale.CHINA); |
| | | resourceInfo.setStartTime(bcdFormat.format(fileDate)); |
| | | // 结束时间可以使用文件修改时间加上一个默认时长(例如1分钟) |
| | | long fileDuration = 60000; // 默认1分钟,实际应该根据文件内容计算 |
| | | Date endTime = new Date(fileDate.getTime() + fileDuration); |
| | | resourceInfo.setEndTime(bcdFormat.format(endTime)); |
| | | resourceInfo.setStartTime(bcdFormat.format(startTimeFromFileName)); |
| | | |
| | | // 结束时间:使用文件修改时间 |
| | | resourceInfo.setEndTime(bcdFormat.format(endTimeFromFile)); |
| | | |
| | | // 报警标志(默认值,实际应从文件元数据获取) |
| | | resourceInfo.setAlarmFlag(0L); |