|
@@ -196,7 +196,7 @@ public class FsUserVideoController extends BaseController
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取视频第一帧为封面
|
|
|
|
|
|
|
+ * 获取视频第三帧为封面
|
|
|
* @param file
|
|
* @param file
|
|
|
* @return
|
|
* @return
|
|
|
* @throws Exception
|
|
* @throws Exception
|
|
@@ -219,7 +219,7 @@ public class FsUserVideoController extends BaseController
|
|
|
return R.error("获取封面失败");
|
|
return R.error("获取封面失败");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 提取视频第一帧
|
|
|
|
|
|
|
+ // 提取视频第三帧
|
|
|
String frameFileName = FilenameUtils.removeExtension(videoFileName) + "_frame.jpg";
|
|
String frameFileName = FilenameUtils.removeExtension(videoFileName) + "_frame.jpg";
|
|
|
createDir(FRAME_OUTPUT_DIR);
|
|
createDir(FRAME_OUTPUT_DIR);
|
|
|
File frameFile = new File(FRAME_OUTPUT_DIR, frameFileName);
|
|
File frameFile = new File(FRAME_OUTPUT_DIR, frameFileName);
|
|
@@ -228,10 +228,10 @@ public class FsUserVideoController extends BaseController
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
// 记录错误日志
|
|
// 记录错误日志
|
|
|
- return R.error("提取第一帧失败");
|
|
|
|
|
|
|
+ return R.error("提取第三帧失败");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 上传第一帧图片到 COS
|
|
|
|
|
|
|
+ // 上传第三帧图片到 COS
|
|
|
String suffix = ".jpg";
|
|
String suffix = ".jpg";
|
|
|
CloudStorageService storage = OSSFactory.build();
|
|
CloudStorageService storage = OSSFactory.build();
|
|
|
String url;
|
|
String url;
|
|
@@ -247,17 +247,17 @@ public class FsUserVideoController extends BaseController
|
|
|
frameFile.delete();
|
|
frameFile.delete();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 返回第一帧图片的 COS URL
|
|
|
|
|
|
|
+ // 返回第三帧图片的 COS URL
|
|
|
return R.ok().put("url", url);
|
|
return R.ok().put("url", url);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 提取视频第一帧的方法
|
|
|
|
|
|
|
+ // 提取视频第三帧的方法
|
|
|
private void extractFirstFrame(String videoPath, String outputImagePath) throws IOException, InterruptedException {
|
|
private void extractFirstFrame(String videoPath, String outputImagePath) throws IOException, InterruptedException {
|
|
|
String[] command = {
|
|
String[] command = {
|
|
|
"ffmpeg",
|
|
"ffmpeg",
|
|
|
"-i", videoPath,
|
|
"-i", videoPath,
|
|
|
-// "-ss", "00:00:01.000", // 截取1秒处的帧
|
|
|
|
|
- "-frames:v", "1",
|
|
|
|
|
|
|
+ "-ss", "00:00:03.000", // 定位到第3秒
|
|
|
|
|
+ "-frames:v", "1", // 只取1帧
|
|
|
"-f", "image2",
|
|
"-f", "image2",
|
|
|
"-update", "1",
|
|
"-update", "1",
|
|
|
"-q:v", "10", // 质量,1为最好,31为最差
|
|
"-q:v", "10", // 质量,1为最好,31为最差
|