Selaa lähdekoodia

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

wangdong6 4 vuotta sitten
vanhempi
commit
d517d8e2f4

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

@ -49,9 +49,28 @@ public class MonitorVideoLogManageController {
49 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 74
	 * @return
56 75
	 * @throws Exception
57 76
	 */

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

@ -23,4 +23,6 @@ public class SecurityProtectionMinioConfig {
23 23
	
24 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,11 +1,17 @@
1 1
package com.ai.bss.security.protection.service.impl;
2 2
3
import java.io.ByteArrayInputStream;
4
import java.io.InputStream;
3 5
import java.util.ArrayList;
4 6
import java.util.Date;
5 7
import java.util.HashMap;
6 8
import java.util.List;
7 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 15
import org.apache.commons.lang.StringUtils;
10 16
import org.springframework.beans.factory.annotation.Autowired;
11 17
import org.springframework.stereotype.Service;
@ -25,11 +31,20 @@ import com.ai.bss.work.safety.service.api.MonitorSceneQuery;
25 31
@Service
26 32
public class MonitorVideoLogManageServiceImpl implements MonitorVideoLogManageService {
27 33
34
	public String SPLIT_CHAR  = "_";
28 35
	@Autowired
29 36
	private MonitorSceneQuery monitorSceneQuery;
30 37
31 38
	@Autowired
32 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 49
	@Override
35 50
	public CommonResponse<List<EbcMonitorVideoLog>> queryMonitorVideoLogByTime(MonitorVideoLog monitorVideoLogCondition)
@ -50,6 +65,46 @@ public class MonitorVideoLogManageServiceImpl implements MonitorVideoLogManageSe
50 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 108
	@Override
54 109
	public CommonResponse<EbcMonitorVideoLog> queryMonitorVideoLogById(Long monitorVideoLogId) throws Exception {
55 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,6 +7,7 @@ import java.util.HashMap;
7 7
import java.util.List;
8 8
import java.util.Map;
9 9
10
import com.ai.abc.exception.BaseException;
10 11
import com.ai.bss.components.common.util.JsonUtils;
11 12
import com.ai.bss.user.dto.UserDto;
12 13
import com.ai.bss.work.attendance.dto.LeaveApprovalDto;
@ -266,7 +267,13 @@ public class WorkOrderManagementServiceImpl implements WorkOrderManagementServic
266 267
		userDto.setId(employId);
267 268
		CommonRequest<UserDto> request = CommonRequest.<UserDto>builder().data(userDto).pageNumber(1).pageSize(1).build();
268 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 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,6 +22,9 @@ public interface MonitorVideoLogManageService {
22 22
	CommonResponse<List<EbcMonitorVideoLog>> queryMonitorVideoLogByTime(MonitorVideoLog monitorVideoLogCondition)
23 23
			throws Exception;
24 24
25
26
	CommonResponse<String> queryMonitorVideoLogByTimeForM3u8(MonitorVideoLog monitorVideoLogCondition) throws Exception;
27
25 28
	/**
26 29
	 * 根据视频日志ID查询监控视频日志
27 30
	 * @param monitorVideoLogId

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

@ -540,7 +540,7 @@ public class DateUtil {
540 540
	/**
541 541
	 * 取得date中的纯日期部分
542 542
	 *
543
	 * @param date需要变动的日期
543
	 * @param date
544 544
	 * @return 变动后的日期
545 545
	 */
546 546
	public static Date getDateWithoutTime(Date date) {
@ -652,4 +652,14 @@ public class DateUtil {
652 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,10 +27,10 @@ spring.main.allow-bean-definition-overriding=true
27 27
#kafka
28 28
#kafka.bootstrap-servers=47.105.160.21:9090
29 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 34
kafka.producer.batch-size=16785
35 35
kafka.producer.retries=1
36 36
kafka.producer.buffer-memory=33554432
@ -65,6 +65,8 @@ spminio.bucketToolImage=tool-image
65 65
spminio.bucketAiVideo=ai-video
66 66
# \u76d1\u63a7\u89c6\u9891\u622a\u56fe
67 67
spminio.bucketAiImage=ai-image
68
# \u76d1\u63a7\u89c6\u9891\u622a\u56fe
69
spminio.bucketM3U8=m3u8-index
68 70
69 71
70 72
# CACHE