|
@@ -11,10 +11,7 @@ import com.tzld.supply.common.enums.SpiderContentMediaTypeEnum;
|
|
|
import com.tzld.supply.common.enums.SpiderContentStatusEnum;
|
|
import com.tzld.supply.common.enums.SpiderContentStatusEnum;
|
|
|
import com.tzld.supply.dao.mapper.supply.spider.*;
|
|
import com.tzld.supply.dao.mapper.supply.spider.*;
|
|
|
import com.tzld.supply.dao.mapper.supply.spider.ext.SpiderMapperExt;
|
|
import com.tzld.supply.dao.mapper.supply.spider.ext.SpiderMapperExt;
|
|
|
-import com.tzld.supply.model.param.FFmpeg.CommandParam;
|
|
|
|
|
-import com.tzld.supply.model.param.FFmpeg.VideoInfoParam;
|
|
|
|
|
-import com.tzld.supply.model.param.FFmpeg.VideoTimeCutParam;
|
|
|
|
|
-import com.tzld.supply.model.param.FFmpeg.VideoUrlsParam;
|
|
|
|
|
|
|
+import com.tzld.supply.model.param.FFmpeg.*;
|
|
|
import com.tzld.supply.model.po.supply.spider.*;
|
|
import com.tzld.supply.model.po.supply.spider.*;
|
|
|
import com.tzld.supply.util.AliOssFileTool;
|
|
import com.tzld.supply.util.AliOssFileTool;
|
|
|
import com.tzld.supply.util.DateUtils;
|
|
import com.tzld.supply.util.DateUtils;
|
|
@@ -231,6 +228,10 @@ public class VideoGenerateJob {
|
|
|
.outputType("video")
|
|
.outputType("video")
|
|
|
.build();
|
|
.build();
|
|
|
String commandResponseData = ffmpegApiService.command(commandParam);
|
|
String commandResponseData = ffmpegApiService.command(commandParam);
|
|
|
|
|
+ if (StringUtils.isBlank(commandResponseData)) {
|
|
|
|
|
+ log.error("视频素材生成 图片转视频失败,param: {}", JSONObject.toJSONString(commandParam));
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
String fileName = String.format("supply/produce/material/video/%s", outputVideoName);
|
|
String fileName = String.format("supply/produce/material/video/%s", outputVideoName);
|
|
|
String imageToVideoOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
|
|
String imageToVideoOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
|
|
|
|
|
|
|
@@ -336,6 +337,10 @@ public class VideoGenerateJob {
|
|
|
.build();
|
|
.build();
|
|
|
lastEndTime = endTime;
|
|
lastEndTime = endTime;
|
|
|
String videoCutUrl = ffmpegApiService.timeCutVideo(timeCutParam);
|
|
String videoCutUrl = ffmpegApiService.timeCutVideo(timeCutParam);
|
|
|
|
|
+ if (StringUtils.isBlank(videoCutUrl)) {
|
|
|
|
|
+ log.error("视频素材生成 视频截取失败,timeCutParam: {}", JSONObject.toJSONString(timeCutParam));
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
String fileName = String.format("supply/produce/material/video/%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
|
|
String fileName = String.format("supply/produce/material/video/%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
|
|
|
String videoCutOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, videoCutUrl, "video/mp4");
|
|
String videoCutOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, videoCutUrl, "video/mp4");
|
|
|
// 获取视频信息
|
|
// 获取视频信息
|
|
@@ -399,6 +404,7 @@ public class VideoGenerateJob {
|
|
|
* 视频生成
|
|
* 视频生成
|
|
|
* 1. 视频素材拼接长视频
|
|
* 1. 视频素材拼接长视频
|
|
|
* 2. 添加音频
|
|
* 2. 添加音频
|
|
|
|
|
+ * 3. 添加水印
|
|
|
*
|
|
*
|
|
|
* @param param
|
|
* @param param
|
|
|
* @return
|
|
* @return
|
|
@@ -459,9 +465,18 @@ public class VideoGenerateJob {
|
|
|
.outputFile(videoName)
|
|
.outputFile(videoName)
|
|
|
.outputType("video")
|
|
.outputType("video")
|
|
|
.build();
|
|
.build();
|
|
|
- String commandResponseData = ffmpegApiService.command(commandParam);
|
|
|
|
|
|
|
+ String addAudioVideoUrl = ffmpegApiService.command(commandParam);
|
|
|
|
|
+ // 添加水印
|
|
|
|
|
+ String watermarkUrl = "http://rescdn.yishihui.com/temp/1763018780183_TVmO96wlvOPiFEtqWy.png";
|
|
|
|
|
+ VideoTextureParam textureParam = VideoTextureParam.builder()
|
|
|
|
|
+ .videoUrl(addAudioVideoUrl)
|
|
|
|
|
+ .imageUrl(watermarkUrl)
|
|
|
|
|
+ .border(0)
|
|
|
|
|
+ .build();
|
|
|
|
|
+ String watermarkVideoUrl = ffmpegApiService.videoTexture(textureParam);
|
|
|
|
|
+ // 上传到OSS
|
|
|
String fileName = String.format("supply/produce/video/%s", videoName);
|
|
String fileName = String.format("supply/produce/video/%s", videoName);
|
|
|
- String finalVideoUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
|
|
|
|
|
|
|
+ String finalVideoUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, watermarkVideoUrl, "video/mp4");
|
|
|
// 更新视频地址
|
|
// 更新视频地址
|
|
|
if (StringUtils.isNotBlank(finalVideoUrl)) {
|
|
if (StringUtils.isNotBlank(finalVideoUrl)) {
|
|
|
produceVideo.setUrl(finalVideoUrl);
|
|
produceVideo.setUrl(finalVideoUrl);
|