diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java index e4e922d52..b0002b065 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -93,7 +93,15 @@ public class VideoController extends BaseController { public ResultData upload(@RequestParam("file") MultipartFile multiReq,@RequestParam Map param) { try { String title = param.get("title"); - VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream()); + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + if(!fileFormat.endsWith("mp4")){ + return new ResultData(ErrorCode.PICTURE_ENDWIDTH_ERROR); + } + VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream(),fileFormat); return new ResultData(result); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 8e23783b3..a23338520 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -564,6 +564,7 @@ public enum ErrorCode{ PICTURE_ANALYZING_ERROR(40002, "您上传的图片无法解析,请检查"), PICTURE_SIZE_CUSTOMIZE(40003, "图片超过大小限制"), PICTURE_W_H_CUSTOMIZE(40004, "图片不符合宽高限制"), + PICTURE_ENDWIDTH_ERROR(40005, "格式不正确"), /** * 电费生成配置 diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 35635f3e4..6ea6679af 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -53,7 +53,15 @@ public class VideoController extends BaseController { public ResultData upload(@RequestParam("file") MultipartFile multiReq,@RequestParam Map param) { try { String title = param.get("title"); - VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream()); + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + if(!fileFormat.endsWith("mp4")){ + return new ResultData(ErrorCode.PICTURE_ENDWIDTH_ERROR); + } + VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream(),fileFormat); return new ResultData(result); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java index fefce84ac..cfeb04f17 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java @@ -13,7 +13,7 @@ public interface VideoExcutor { */ public VideUploadResult uploadLocalVideo(String title,String localFile); - public VideUploadResult uploadLocalVideo(String title,InputStream inputStream); + public VideUploadResult uploadLocalVideo(String title,InputStream inputStream,String fileFormat); //ext,后缀名 public VideUploadResult uploadNetVideo(String title,String url,String ext); diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index dd5b0ab5d..7764495fe 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -1,12 +1,11 @@ package com.iformall.video.aliyun; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.util.List; import java.util.UUID; +import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; @@ -51,6 +50,7 @@ public class AliyunVideoExcutor implements VideoExcutor { UploadVideoResponse response =AliyunVedioUpload.uploadVideo(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, localFile,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); + setVideUploadResult(result,response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); result.setSuccess(true); }else { @@ -66,12 +66,29 @@ public class AliyunVideoExcutor implements VideoExcutor { return result; } + private void setVideUploadResult(VideUploadResult result,String videoId) throws ClientException { + result.setVideoId(videoId); + GetPlayInfoResponse response = AliyunVedioServer.getPlayInfoResponse(config, videoId); + if(response != null){ + List playInfoList = response.getPlayInfoList(); + //播放地址 + for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) { + result.setVideoUrl(playInfo.getPlayURL()); + break; + } + GetPlayInfoResponse.VideoBase videoBase = response.getVideoBase(); + result.setDuration(videoBase.getDuration()); + result.setCoverURL(videoBase.getCoverURL()); + result.setTitle(videoBase.getTitle()); + } + } + @Override - public VideUploadResult uploadLocalVideo(String title,InputStream inputStream) { + public VideUploadResult uploadLocalVideo(String title,InputStream inputStream,String fileFormat) { VideUploadResult result = new VideUploadResult(); UploadStreamResponse response; try { - response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-",""), inputStream,redisTemplate); + response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-","")+fileFormat, inputStream,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java index 387de1d28..d35823f92 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java @@ -41,4 +41,17 @@ public class AliyunVedioServer { } return null; } + + public static GetPlayInfoResponse getPlayInfoResponse(AliyunVideoConfig config, String videoId) throws ClientException { + DefaultAcsClient client = initVodClient(config); + GetPlayInfoResponse response = new GetPlayInfoResponse(); + try { + GetPlayInfoRequest request = new GetPlayInfoRequest(); + request.setVideoId(videoId); + return client.getAcsResponse(request); + } catch (Exception e) { + log.error("getVedioUrl error.",e); + } + return null; + } } diff --git a/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java b/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java index 55bdb92e6..70ae1d469 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java +++ b/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java @@ -6,6 +6,9 @@ import lombok.Data; public class VideUploadResult { private String videoId; private String videoUrl; + private String coverURL;//视频封面 + private String duration;//视频时长 + private String title;//视频标题 private boolean success = false; private String msg; }