Browse Source

修改视频回放服务,生成m3u8索引2文件

wangdong6 4 years ago
parent
commit
d517d8e2f4

+ 20 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/controller/MonitorVideoLogManageController.java

49
		return monitorVideoLogManageService.queryMonitorVideoLogByTime(monitorVideoLogCondition);
49
		return monitorVideoLogManageService.queryMonitorVideoLogByTime(monitorVideoLogCondition);
50
	}
50
	}
51
51
52
53
	/**
54
	 * 查询监控视频日志(按时间段)
55
	 * @param attendanceReport
56
	 * @return
57
	 * @throws Exception
58
	 */
59
	@ResponseBody
60
	@RequestMapping("/queryMonitorVideoLogForM3u8")
61
	public CommonResponse<String> queryMonitorVideoLogByTimeForM3u8(@ModelAttribute AttendanceReport attendanceReport)
62
			throws Exception {
63
		MonitorVideoLog monitorVideoLogCondition = new MonitorVideoLog();
64
		monitorVideoLogCondition.setResourceToolId(attendanceReport.getId());
65
		monitorVideoLogCondition.setBeginTime(DateUtil.convertDate(attendanceReport.getBeginDay()));
66
		monitorVideoLogCondition.setEndTime(DateUtil.convertDate(attendanceReport.getEndDay()));
67
68
		return monitorVideoLogManageService.queryMonitorVideoLogByTimeForM3u8(monitorVideoLogCondition);
69
	}
70
52
	/**
71
	/**
53
	 * 查询单个监控视频日志
72
	 * 查询单个监控视频日志
54
	 * @param resourceToolId
73
	 * @param monitorVideoLogId
55
	 * @return
74
	 * @return
56
	 * @throws Exception
75
	 * @throws Exception
57
	 */
76
	 */

+ 2 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/model/SecurityProtectionMinioConfig.java

23
	
23
	
24
	private String bucketAiImage;
24
	private String bucketAiImage;
25
25
26
	private String bucketM3U8;
27
26
}
28
}

+ 55 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/MonitorVideoLogManageServiceImpl.java

1
package com.ai.bss.security.protection.service.impl;
1
package com.ai.bss.security.protection.service.impl;
2
2
3
import java.io.ByteArrayInputStream;
4
import java.io.InputStream;
3
import java.util.ArrayList;
5
import java.util.ArrayList;
4
import java.util.Date;
6
import java.util.Date;
5
import java.util.HashMap;
7
import java.util.HashMap;
6
import java.util.List;
8
import java.util.List;
7
import java.util.Map;
9
import java.util.Map;
8
10
11
import cn.hutool.core.lang.UUID;
12
import com.ai.bss.components.minio.service.MinioService;
13
import com.ai.bss.security.protection.model.SecurityProtectionMinioConfig;
14
import com.ai.bss.security.protection.service.interfaces.UploadFileService;
9
import org.apache.commons.lang.StringUtils;
15
import org.apache.commons.lang.StringUtils;
10
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.stereotype.Service;
17
import org.springframework.stereotype.Service;
25
@Service
31
@Service
26
public class MonitorVideoLogManageServiceImpl implements MonitorVideoLogManageService {
32
public class MonitorVideoLogManageServiceImpl implements MonitorVideoLogManageService {
27
33
34
	public String SPLIT_CHAR  = "_";
28
	@Autowired
35
	@Autowired
29
	private MonitorSceneQuery monitorSceneQuery;
36
	private MonitorSceneQuery monitorSceneQuery;
30
37
31
	@Autowired
38
	@Autowired
32
	private MonitorSceneCommand monitorSceneCommand;
39
	private MonitorSceneCommand monitorSceneCommand;
40
	@Autowired
41
	private MinioService minioService;
42
	@Autowired
43
	private UploadFileService uploadFileService;
44
45
46
	@Autowired
47
	private SecurityProtectionMinioConfig minioConfig;
33
48
34
	@Override
49
	@Override
35
	public CommonResponse<List<EbcMonitorVideoLog>> queryMonitorVideoLogByTime(MonitorVideoLog monitorVideoLogCondition)
50
	public CommonResponse<List<EbcMonitorVideoLog>> queryMonitorVideoLogByTime(MonitorVideoLog monitorVideoLogCondition)
50
		return CommonResponse.ok(list);
65
		return CommonResponse.ok(list);
51
	}
66
	}
52
67
68
69
70
	@Override
71
	public CommonResponse<String> queryMonitorVideoLogByTimeForM3u8(MonitorVideoLog monitorVideoLogCondition) throws Exception {
72
		CommonRequest<MonitorVideoLog> request = new CommonRequest<MonitorVideoLog>(monitorVideoLogCondition);
73
		CommonResponse<List<MonitorVideoLog>> response = monitorSceneQuery.queryMonitorVideoLogByTime(request);
74
75
		List<EbcMonitorVideoLog> list = new ArrayList<EbcMonitorVideoLog>();
76
		if (response == null || CollectionUtils.isEmpty(response.getData())) {
77
			return CommonResponse.ok(null);
78
		}
79
80
81
		StringBuffer m3u8Str = new StringBuffer();
82
		m3u8Str.append("#EXTM3U").append("\n");
83
		m3u8Str.append("#EXT-X-VERSION:3").append("\n");
84
		m3u8Str.append("#EXT-X-TARGETDURATION:65").append("\n");
85
		m3u8Str.append("#EXT-X-MEDIA-SEQUENCE:0").append("\n");
86
		String bucketName = minioConfig.getBucketM3U8();//"m3u8-index";
87
		String fileType = ".m3u8";
88
		String m3u8FileName = bucketName + SPLIT_CHAR + UUID.fastUUID().toString().replace("-", "") + fileType;
89
90
		String videoUrl = "";
91
		for (MonitorVideoLog monitorVideoLog : response.getData()) {
92
			EbcMonitorVideoLog ebcMonitorVideoLog = getEbcMonitorVideoLog(monitorVideoLog);
93
			list.add(ebcMonitorVideoLog);
94
			videoUrl = uploadFileService.getFileUrl(monitorVideoLog.getVideoUrl());// minioService.getObjectUrl(videoFileIdArr[0],ebcMonitorVideoLog.getVideoFileUrl());
95
96
			m3u8Str.append("#EXTINF:65,").append("\n");
97
			m3u8Str.append(videoUrl).append("\n");
98
		}
99
		m3u8Str.append("#EXT-X-ENDLIST").append("\n");
100
		InputStream is = new ByteArrayInputStream(m3u8Str.toString().getBytes());
101
		minioService.putObject(bucketName,m3u8FileName,is,fileType);
102
103
		String m3u8IndexFileUrl = uploadFileService.getFileUrl(m3u8FileName);
104
105
		return CommonResponse.ok(m3u8IndexFileUrl);
106
	}
107
53
	@Override
108
	@Override
54
	public CommonResponse<EbcMonitorVideoLog> queryMonitorVideoLogById(Long monitorVideoLogId) throws Exception {
109
	public CommonResponse<EbcMonitorVideoLog> queryMonitorVideoLogById(Long monitorVideoLogId) throws Exception {
55
		CommonRequest<Long> request = new CommonRequest<Long>(monitorVideoLogId);
110
		CommonRequest<Long> request = new CommonRequest<Long>(monitorVideoLogId);

+ 8 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/service/impl/WorkOrderManagementServiceImpl.java

7
import java.util.List;
7
import java.util.List;
8
import java.util.Map;
8
import java.util.Map;
9
9
10
import com.ai.abc.exception.BaseException;
10
import com.ai.bss.components.common.util.JsonUtils;
11
import com.ai.bss.components.common.util.JsonUtils;
11
import com.ai.bss.user.dto.UserDto;
12
import com.ai.bss.user.dto.UserDto;
12
import com.ai.bss.work.attendance.dto.LeaveApprovalDto;
13
import com.ai.bss.work.attendance.dto.LeaveApprovalDto;
266
		userDto.setId(employId);
267
		userDto.setId(employId);
267
		CommonRequest<UserDto> request = CommonRequest.<UserDto>builder().data(userDto).pageNumber(1).pageSize(1).build();
268
		CommonRequest<UserDto> request = CommonRequest.<UserDto>builder().data(userDto).pageNumber(1).pageSize(1).build();
268
		CommonResponse<PageBean<UserDto>>  result = userDtoQuery.queryWorkEmployee(request);
269
		CommonResponse<PageBean<UserDto>>  result = userDtoQuery.queryWorkEmployee(request);
269
		String  employOrgId = result.getData().getData().get(0).getOrgId();
270
		String employOrgId = "";
271
		try {
272
			employOrgId = result.getData().getData().get(0).getOrgId();
273
		}catch (Exception e){
274
			log.error("员工不存在");
275
			new BaseException("员工不存在");
276
		}
270
		log.info("输出参数:{}",JSON.toJSONString(result , SerializerFeature.PrettyFormat));
277
		log.info("输出参数:{}",JSON.toJSONString(result , SerializerFeature.PrettyFormat));
271
278
272
279

+ 3 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/interfaces/MonitorVideoLogManageService.java

22
	CommonResponse<List<EbcMonitorVideoLog>> queryMonitorVideoLogByTime(MonitorVideoLog monitorVideoLogCondition)
22
	CommonResponse<List<EbcMonitorVideoLog>> queryMonitorVideoLogByTime(MonitorVideoLog monitorVideoLogCondition)
23
			throws Exception;
23
			throws Exception;
24
24
25
26
	CommonResponse<String> queryMonitorVideoLogByTimeForM3u8(MonitorVideoLog monitorVideoLogCondition) throws Exception;
27
25
	/**
28
	/**
26
	 * 根据视频日志ID查询监控视频日志
29
	 * 根据视频日志ID查询监控视频日志
27
	 * @param monitorVideoLogId
30
	 * @param monitorVideoLogId

+ 11 - 1
security-protection-service/src/main/java/com/ai/bss/security/protection/utils/DateUtil.java

540
	/**
540
	/**
541
	 * 取得date中的纯日期部分
541
	 * 取得date中的纯日期部分
542
	 *
542
	 *
543
	 * @param date需要变动的日期
543
	 * @param date
544
	 * @return 变动后的日期
544
	 * @return 变动后的日期
545
	 */
545
	 */
546
	public static Date getDateWithoutTime(Date date) {
546
	public static Date getDateWithoutTime(Date date) {
652
		return Integer.parseInt(lastDay);
652
		return Integer.parseInt(lastDay);
653
	}
653
	}
654
654
655
656
	public static String getDateTimeString(Date date){
657
		if (date == null){
658
			return null;
659
		}
660
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat( NORM_DATETIME_PATTERN);
661
		String dateString = simpleDateFormat.format(date);
662
		return dateString;
663
	}
664
655
}
665
}

+ 6 - 4
security-protection-service/src/main/resources/application.properties

27
#kafka
27
#kafka
28
#kafka.bootstrap-servers=47.105.160.21:9090
28
#kafka.bootstrap-servers=47.105.160.21:9090
29
kafka.bootstrap-servers=10.19.90.34:9090
29
kafka.bootstrap-servers=10.19.90.34:9090
30
kafka.topic.aitask=topic_ai_task
31
kafka.topic.aivideo=topic_ai_video
32
#kafka.topic.aitask=topicTaskTest
33
#kafka.topic.aivideo=topicVideoTest
30
#kafka.topic.aitask=topic_ai_task
31
#kafka.topic.aivideo=topic_ai_video
32
kafka.topic.aitask=topicTaskTest
33
kafka.topic.aivideo=topicVideoTest
34
kafka.producer.batch-size=16785
34
kafka.producer.batch-size=16785
35
kafka.producer.retries=1
35
kafka.producer.retries=1
36
kafka.producer.buffer-memory=33554432
36
kafka.producer.buffer-memory=33554432
65
spminio.bucketAiVideo=ai-video
65
spminio.bucketAiVideo=ai-video
66
# \u76d1\u63a7\u89c6\u9891\u622a\u56fe
66
# \u76d1\u63a7\u89c6\u9891\u622a\u56fe
67
spminio.bucketAiImage=ai-image
67
spminio.bucketAiImage=ai-image
68
# \u76d1\u63a7\u89c6\u9891\u622a\u56fe
69
spminio.bucketM3U8=m3u8-index
68
70
69
71
70
# CACHE
72
# CACHE