文章目录
- 1、准备工作
- 2、代码详解
- 3、测试结果
1、准备工作
首先配置文件中需要配置好阿里云相关id和密钥(和阿里云OSS配置一样)
如果不知道id和密钥,就去阿里云官网进行服务开通申请就可以得到
2、代码详解
配置类:用于读取配置文件中的id和密钥
@Component
public class ConstantVodUtil implements InitializingBean {@Value("${aliyun.vod.file.keyid}")private String keyId;@Value("${aliyun.vod.file.keysecret}")private String keySecret;public static String ACCESS_KEY_SECRET;public static String ACCESS_KEY_ID;@Overridepublic void afterPropertiesSet() throws Exception {ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;}
}
Controller:
@RestController
@RequestMapping("/eduvod/video")
public class VodController {@Autowiredprivate VodService vodService;/*** 上传视频到阿里云*/@PostMapping("/uplaodVideo")public R uplaodVideo(MultipartFile file) {//返回上传视频的idString videoId = vodService.uploadVideo(file);return R.ok().data("videoId", videoId);}
}
Service:
@Service
public class VodServiceImpl implements VodService {/*** 上传视频** @param file* @return*/@Overridepublic String uploadVideo(MultipartFile file) {try {//上传文件的原始名称String fileName = file.getOriginalFilename();//上传后显示的名称,这里我想去掉后缀名,例如.mp4String title = fileName.substring(0, fileName.lastIndexOf("."));//文件输入流InputStream inputStream = file.getInputStream();UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtil.ACCESS_KEY_ID,ConstantVodUtil.ACCESS_KEY_SECRET, title, fileName, inputStream);UploadVideoImpl uploader = new UploadVideoImpl();UploadStreamResponse response = uploader.uploadStream(request);//获取到视频id(这个很重要,有了视频id从才可以获取播放地址和凭证)String videoId = response.getVideoId();return videoId;} catch (Exception e) {e.printStackTrace();return null;}}
}
解释说明:为什么接口最终需要返回视频id?
有了视频id,就可以通过官方SDK(就是api的意思)获取到视频的播放地址和凭证
有了播放地址,就可以通过浏览器进行视频播放,那么凭证有什么用呢?
项目中上传的视频一般需要通过模板转码进行加密,也就是说,不能直接通过网址进行播放
也就是说,加密后的视频需要网址 + 凭证进行播放,否则无法播放视频 、
3、测试结果
通过swagger进行测试,可以上传成功,并且能拿到视频id:
阿里云媒资库中可有看到刚刚上传成功的视频,测试成功!