解决方案是阿里云自带的API
// 填写视频文件的完整路径。
String objectName = dto.getVideoUrl();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 使用精确时间模式截取视频1s处的内容,输出为JPG格式的图片,宽度为800,高度为600。
//如果要第一帧 应该用t_1 第一毫秒就可以 但很多视频前面几帧是纯黑的 所以我用第一秒
String style = "video/snapshot,t_1000,f_jpg,w_800,h_600";
// 指定过期时间为一年
Date expiration = new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration(expiration);
req.setProcess(style);
URL signedUrl = ossClient.generatePresignedUrl(req);
//这里注意,最终的结果是拼接在原视频地址后面的,拼接方式是?x-oss-process=
//这一部分在query当中,我根据等号切割拿到最后一部分再在前面手动拼接上形成最终图片url
String query = signedUrl.getQuery();
String[] split = query.split("=");
shareDetailDO.setImgUrl(dto.getVideoUrl()+"?x-oss-process="+split[split.length-1]);
// 关闭OSSClient。
ossClient.shutdown();
阿里云的说明地址:https://help.aliyun.com/document_detail/64555.html?spm=a2c4g.11174283.6.1472.55457da2vrSZqX