From 8c99e2d8b6c1e0d9cde6abbe80b4df75be19f6d1 Mon Sep 17 00:00:00 2001 From: Administrator <2863138610@qq.com> Date: 星期二, 29 十一月 2022 16:31:18 +0800 Subject: [PATCH] 课程与课件bug修复 --- src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java | 234 +++++++++++++++++++++++++++++++--------------------------- 1 files changed, 124 insertions(+), 110 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java index 61b7c15..51f6744 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java @@ -1,10 +1,14 @@ package com.qxueyou.scc.teach.res.service.impl.resitem; +import java.io.File; import java.util.Date; +import com.qxueyou.scc.sys.utils.VideoUtil; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @@ -27,159 +31,169 @@ @Service(value = "ResItemVideoService") public class ResItemVideoService extends CommonAppService implements IResItemService { - public static final String RES_VIDEO_CONVER_LST = "RES_VIDEO_CONVER_LST"; + public static final String RES_VIDEO_CONVER_LST = "RES_VIDEO_CONVER_LST"; - @Autowired - IFileService fileService; + @Autowired + IFileService fileService; - @Autowired - ICacheService cacheService; + @Autowired + ICacheService cacheService; - @Override - public String add(String fileId, String name) { + @Value("${scc.resRootPath}") + String resRootPath; - ResFile file = fileService.read(fileId); - String mediaVideoId = addVideoConverTask(file); + @Override + public String add(String fileId, String name) { + ResFile file = fileService.read(fileId); + String mediaVideoId = addVideoConverTask(file); - ResItemVideo resVideo = new ResItemVideo(); + ResItemVideo resVideo = new ResItemVideo(); - TraceUtils.setCreateTrace(resVideo); + TraceUtils.setCreateTrace(resVideo); + try { + resVideo.setFileId(fileId); + resVideo.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath())); + resVideo.setName(name); + resVideo.setMediaVideoId(mediaVideoId); + resVideo.setStatus(ResItemVideo.STATUS_LINEUP); + save(resVideo); - resVideo.setFileId(fileId); - resVideo.setName(name); - resVideo.setMediaVideoId(mediaVideoId); - resVideo.setStatus(ResItemVideo.STATUS_LINEUP); - save(resVideo); + // 将mediaVideoId放进缓存 + cacheService.lstRightPush(RES_VIDEO_CONVER_LST, mediaVideoId); + }catch (Exception e){ + e.printStackTrace(); + } + return resVideo.getVideoId(); + } - // 将mediaVideoId放进缓存 - cacheService.lstRightPush(RES_VIDEO_CONVER_LST, mediaVideoId); + private String addVideoConverTask(ResFile file) { - return resVideo.getVideoId(); - } + MediaVideo video = insertMediaVideo(file); + insertMediaVideoConverTask(video); - private String addVideoConverTask(ResFile file) { + return video.getVideoId(); - MediaVideo video = insertMediaVideo(file); - insertMediaVideoConverTask(video); + } - return video.getVideoId(); + private MediaVideo insertMediaVideo(ResFile file) { - } + MediaVideo video = new MediaVideo(); - private MediaVideo insertMediaVideo(ResFile file) { + TraceUtils.setCreateTrace(video); - MediaVideo video = new MediaVideo(); + try { + video.setDeleteFlag(false); + video.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath())); + video.setName(file.getFileName()); + video.setOrigUrl(file.getPath()); + video.setStatus(MediaVideo.STATUS_LINEUP); + video.setType(MediaVideo.MEDIA_VIDEO); + }catch (Exception e){ + e.printStackTrace(); + } - TraceUtils.setCreateTrace(video); + save(video); - video.setDeleteFlag(false); - video.setName(file.getFileName()); - video.setOrigUrl(file.getPath()); - video.setStatus(MediaVideo.STATUS_LINEUP); - video.setType(MediaVideo.MEDIA_VIDEO); + return video; + } - save(video); + private Result insertMediaVideoConverTask(MediaVideo resVideo) { - return video; - } + VideoConverTask task = new VideoConverTask(); - private Result insertMediaVideoConverTask(MediaVideo resVideo) { + task.setCreateTime(new Date()); + task.setDeleteFlag(false); + task.setVideoId(resVideo.getVideoId()); + task.setVideoUrl(resVideo.getOrigUrl()); + task.setType(MediaVideo.MEDIA_VIDEO); + task.setPriority(5); - VideoConverTask task = new VideoConverTask(); + save(task); - task.setCreateTime(new Date()); - task.setDeleteFlag(false); - task.setVideoId(resVideo.getVideoId()); - task.setVideoUrl(resVideo.getOrigUrl()); - task.setType(MediaVideo.MEDIA_VIDEO); - task.setPriority(5); + return new Result(true); + } - save(task); + @Override + public Result update(String id, String name) { - return new Result(true); - } + ResItemVideo video = read(ResItemVideo.class, id); - @Override - public Result update(String id, String name) { + TraceUtils.setUpdateTrace(video); - ResItemVideo video = read(ResItemVideo.class, id); + video.setName(name); - TraceUtils.setUpdateTrace(video); + save(video); - video.setName(name); + return new Result(true, "success"); + } - save(video); + @Override + public String readAccessPath(String resId, String attribute) { - return new Result(true, "success"); - } + ResItemVideo resItemVideo = read(ResItemVideo.class, resId); - @Override - public String readAccessPath(String resId, String attribute) { - - ResItemVideo resItemVideo = read(ResItemVideo.class, resId); - - if (resItemVideo != null && resItemVideo.getStatus() != ResItemVideo.STATUS_DRAFT) { - ResFile resFile = read(ResFile.class,resItemVideo.getFileId()); - return resFile.getPath(); + if (resItemVideo != null && resItemVideo.getStatus() != ResItemVideo.STATUS_DRAFT) { + ResFile resFile = read(ResFile.class, resItemVideo.getFileId()); + return resFile.getPath(); // return null; - } + } - MediaVideo video = read(MediaVideo.class, resItemVideo.getMediaVideoId()); + MediaVideo video = read(MediaVideo.class, resItemVideo.getMediaVideoId()); - if (video == null) { - return null; - } + if (video == null) { + return null; + } - return JSONObject.toJSONString(CollectionUtils.newObjectMap("hd",video.getAndroidHD(), "sd", video.getAndroidSD(), "ld", video.getAndroidLD(), "path",StringUtils.isNotEmpty(video.getAndroidHD()) ? video.getAndroidHD() - : StringUtils.isNotEmpty(video.getAndroidSD()) ? video.getAndroidSD() : video.getAndroidLD())); + return JSONObject.toJSONString(CollectionUtils.newObjectMap("hd", video.getAndroidHD(), "sd", video.getAndroidSD(), "ld", video.getAndroidLD(), "path", StringUtils.isNotEmpty(video.getAndroidHD()) ? video.getAndroidHD() + : StringUtils.isNotEmpty(video.getAndroidSD()) ? video.getAndroidSD() : video.getAndroidLD())); - } + } - @Override - public String getResItemType() { - return Res.FILE_TYPE_VIDEO; - } + @Override + public String getResItemType() { + return Res.FILE_TYPE_VIDEO; + } - /** - * 定时器转码成功后 同步更新ResItemVideo的状态 - */ - @Scheduled(cron = "0/2 * * * * ?") // 每2秒执行一次 - public void doTimer() { + /** + * 定时器转码成功后 同步更新ResItemVideo的状态 + */ + @Scheduled(cron = "0/2 * * * * ?") // 每2秒执行一次 + public void doTimer() { - String mediaVideoId = cacheService.lstLeftPop(RES_VIDEO_CONVER_LST); + String mediaVideoId = cacheService.lstLeftPop(RES_VIDEO_CONVER_LST); - if (StringUtils.isBlank(mediaVideoId)) { - return; - } + if (StringUtils.isBlank(mediaVideoId)) { + return; + } - MediaVideo mediaVideo = read(MediaVideo.class, mediaVideoId); - if (mediaVideo.getStatus() == MediaVideo.STATUS_DRAFT) { - if (mediaVideo.getType().equals("video")) { - ResItemVideo resItemVideo = findUnique( - "from ResItemVideo where deleteFlag is false and mediaVideoId = ?", - CollectionUtils.newList(mediaVideoId), ResItemVideo.class); - resItemVideo.setStatus(ResItemVideo.STATUS_DRAFT); - TraceUtils.setUpdateTrace(resItemVideo); - resItemVideo.setVideoSeconds(mediaVideo.getPlayTime()); - save(resItemVideo); + MediaVideo mediaVideo = read(MediaVideo.class, mediaVideoId); + if (mediaVideo.getStatus() == MediaVideo.STATUS_DRAFT) { + if (mediaVideo.getType().equals("video")) { + ResItemVideo resItemVideo = findUnique( + "from ResItemVideo where deleteFlag is false and mediaVideoId = ?", + CollectionUtils.newList(mediaVideoId), ResItemVideo.class); + resItemVideo.setStatus(ResItemVideo.STATUS_DRAFT); + TraceUtils.setUpdateTrace(resItemVideo); + resItemVideo.setVideoSeconds(mediaVideo.getPlayTime()); + save(resItemVideo); - cacheService.lstRightPush(ResService.RES_TOUPDATE_CONVER_STATUS_LST, resItemVideo.getVideoId());// 将转码完成后的文件id放入缓存。 - return; - } else if (mediaVideo.getType().equals("audio")) { - ResItemAudio resItemAudio = findUnique( - "from ResItemAudio where deleteFlag is false and mediaVideoId = ?", - CollectionUtils.newList(mediaVideoId), ResItemAudio.class); - resItemAudio.setStatus(ResItemVideo.STATUS_DRAFT); - TraceUtils.setUpdateTrace(resItemAudio); - resItemAudio.setSeconds(mediaVideo.getPlayTime()); - save(resItemAudio); + cacheService.lstRightPush(ResService.RES_TOUPDATE_CONVER_STATUS_LST, resItemVideo.getVideoId());// 将转码完成后的文件id放入缓存。 + return; + } else if (mediaVideo.getType().equals("audio")) { + ResItemAudio resItemAudio = findUnique( + "from ResItemAudio where deleteFlag is false and mediaVideoId = ?", + CollectionUtils.newList(mediaVideoId), ResItemAudio.class); + resItemAudio.setStatus(ResItemVideo.STATUS_DRAFT); + TraceUtils.setUpdateTrace(resItemAudio); + resItemAudio.setSeconds(mediaVideo.getPlayTime()); + save(resItemAudio); - cacheService.lstRightPush(ResService.RES_TOUPDATE_CONVER_STATUS_LST, resItemAudio.getAudioId());// 将转码完成后的文件id放入缓存。 - return; - } + cacheService.lstRightPush(ResService.RES_TOUPDATE_CONVER_STATUS_LST, resItemAudio.getAudioId());// 将转码完成后的文件id放入缓存。 + return; + } - } - cacheService.lstRightPush(RES_VIDEO_CONVER_LST, mediaVideoId); + } + cacheService.lstRightPush(RES_VIDEO_CONVER_LST, mediaVideoId); - } + } } -- Gitblit v1.8.0