From 7f688f886334867892aa662335014d98998ee289 Mon Sep 17 00:00:00 2001 From: sdy Date: Tue, 2 Jun 2026 19:14:30 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=A3=9E=E6=9C=BA=E5=BD=95=E5=83=8F=E6=9A=82?= =?UTF-8?q?=E5=81=9C=E9=94=99=E8=AF=AF=E4=BC=98=E5=8C=96=202.=E5=AA=92?= =?UTF-8?q?=E4=BD=93=E5=BA=93=E8=A7=86=E9=A2=91=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B0=81=E9=9D=A2=203.srs=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=B0=81=E9=9D=A2=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/controller/CameraController.java | 2 +- .../modules/business/dto/MediaFileDTO.java | 4 ++++ .../service/impl/FlightTaskServiceImpl.java | 19 ++++++++++++++----- .../service/impl/MediaFileServiceImpl.java | 9 ++++++++- .../business/service/impl/SrsServiceImpl.java | 6 ++++++ 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/admin/src/main/java/com/multictrl/modules/business/controller/CameraController.java b/admin/src/main/java/com/multictrl/modules/business/controller/CameraController.java index 8433a08..2c82458 100644 --- a/admin/src/main/java/com/multictrl/modules/business/controller/CameraController.java +++ b/admin/src/main/java/com/multictrl/modules/business/controller/CameraController.java @@ -64,7 +64,7 @@ public class CameraController { "camera_recording_start开始录像 camera_recording_stop停止录像") @RequestParam String mode) { if (!mode.equals("camera_photo_take") && !mode.equals("camera_photo_stop") && - !mode.equals("camera_recording_start") && !mode.equals("camera_recording_sto")) { + !mode.equals("camera_recording_start") && !mode.equals("camera_recording_stop")) { return new Result<>().error(ErrorCode.PARAMS_ERROR); } diff --git a/admin/src/main/java/com/multictrl/modules/business/dto/MediaFileDTO.java b/admin/src/main/java/com/multictrl/modules/business/dto/MediaFileDTO.java index 626c63e..6b5d733 100644 --- a/admin/src/main/java/com/multictrl/modules/business/dto/MediaFileDTO.java +++ b/admin/src/main/java/com/multictrl/modules/business/dto/MediaFileDTO.java @@ -78,4 +78,8 @@ public class MediaFileDTO implements Serializable { @Schema(description = "媒体数量") private Integer mediaNum; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + @Schema(description = "视频封面") + private String cover; } diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/FlightTaskServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/FlightTaskServiceImpl.java index e9fce75..824c219 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/impl/FlightTaskServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/FlightTaskServiceImpl.java @@ -300,7 +300,14 @@ public class FlightTaskServiceImpl extends CrudServiceImpl list = mediaFileService.list(params); for (MediaFileDTO dto : list) { String objectKey = dto.getObjectKey(); - dto.setUrl(BusinessConstant.IMAGE_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + objectKey); + String subFileType = dto.getSubFileType(); + if ("video".equals(subFileType)) { + dto.setUrl(BusinessConstant.VIDEO_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + objectKey); + dto.setCover(BusinessConstant.IMAGE_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + + objectKey.replaceAll(".mp4", BusinessConstant.VIDEO_COVER_SUFFIX)); + } else { + dto.setUrl(BusinessConstant.IMAGE_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + objectKey); + } } return list; } @@ -321,9 +328,11 @@ public class FlightTaskServiceImpl extends CrudServiceImpl list = srsService.getDao().selectList(wrapper); for (SrsRecordEntity srsRecordEntity : list) { + String file = srsRecordEntity.getFile(); srsRecordEntity.setRecordDate(DateUtils.getBeforeHour(srsRecordEntity.getRecordDate(), 8)); - srsRecordEntity.setUrl(BusinessConstant.VIDEO_PATH + srsRecordEntity.getFile()); - srsRecordEntity.setCover(BusinessConstant.IMAGE_PATH + getVideoCover(srsRecordEntity.getFile(), srsRecordEntity.getStreamUrl())); + srsRecordEntity.setUrl(BusinessConstant.VIDEO_PATH + file); +// srsRecordEntity.setCover(BusinessConstant.IMAGE_PATH + getVideoCover(srsRecordEntity.getFile(), srsRecordEntity.getStreamUrl())); + srsRecordEntity.setCover(BusinessConstant.IMAGE_PATH + file.replaceAll(".mp4", BusinessConstant.VIDEO_COVER_SUFFIX)); } return list; @@ -347,11 +356,11 @@ public class FlightTaskServiceImpl extends CrudServiceImpl v != null && v.getCreatedTime() != null) .peek(v -> { String objectKey = v.getObjectKey(); - v.setUrl(BusinessConstant.IMAGE_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + objectKey); + String subFileType = v.getSubFileType(); + if ("video".equals(subFileType)) { + v.setUrl(BusinessConstant.VIDEO_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + objectKey); + v.setCover(BusinessConstant.IMAGE_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + + objectKey.replaceAll(".mp4", BusinessConstant.VIDEO_COVER_SUFFIX)); + } else { + v.setUrl(BusinessConstant.IMAGE_PATH + BusinessConstant.DOCK_MEDIA_BUCKET + "/" + objectKey); + } }).collect(Collectors.groupingBy( v -> DateUtils.format(v.getCreatedTime(), "yyyy年MM月dd日"), () -> new TreeMap>(Comparator.reverseOrder()), diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/SrsServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/SrsServiceImpl.java index a988c26..14f67a4 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/impl/SrsServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/SrsServiceImpl.java @@ -6,6 +6,8 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.multictrl.common.config.SrsConfig; +import com.multictrl.common.constant.BusinessConstant; +import com.multictrl.common.utils.FfmpegUtils; import com.multictrl.modules.business.dao.SrsClient; import com.multictrl.modules.business.dao.SrsRecordDao; import com.multictrl.modules.business.dto.SrsCallBackDTO; @@ -58,6 +60,10 @@ public class SrsServiceImpl implements SrsService { if (StrUtil.isNotBlank(dateTime)) { srsRecordEntity.setRecordDate(DateUtil.parse(dateTime, "yyyy-MM-dd HH:mm:ss:SSS")); } + + //设置封面 + String videoCoverPath = srsRecordEntity.getFile().replaceAll(".mp4", BusinessConstant.VIDEO_COVER_SUFFIX); + FfmpegUtils.generateVideoCover("/" + file, "/" + videoCoverPath); srsRecordDao.insert(srsRecordEntity); } } catch (Exception e) {