详细配置请去阿里云官网查看
第一步 开通视频点播服务
第二步 添加依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.15.10</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
//需要自己下载到本地
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-sdk-vod-upload</artifactId>
<version>1.4.12</version>
</dependency>
第三步 创建一个初始化类
public class initvodClient {
public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
String regionId = "cn-shanghai"; // 点播服务接入区域
DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
}
第四步 创建service类 设置自己的阿里云oss密钥
private static final String accessKeyId ="LTAI4G6nbXhZuEfz4jjGnhE5";
//账号AK信息请填写(必选)
private static final String accessKeySecret = "o4gojeDoqjoEEyLW8DIpFrvzxYbNZT";
文件流上传视频 返回视频的ID
@Override
public void testUploadStream(MultipartFile file) {
try {
InputStream inputStream = file.getInputStream();
String filename = file.getOriginalFilename();
String title=filename.substring(0,filename.lastIndexOf("."));
UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, filename, inputStream);
//设置组 可以加密
request.setTemplateGroupId("c54a3d0b92`在这里插入代码片`872d37e718bf8c9cc53a73");
UploadVideoImpl uploadVideo = new UploadVideoImpl();
UploadStreamResponse response = uploadVideo.uploadStream(request);
String id =null;
if(response.isSuccess()){
id= response.getVideoId();
}else {
id= response.getVideoId();
}
} catch (IOException e) {
e.printStackTrace();
}
}
通过ID查找视频的URL 播放视频(只针对未加密视频)
public void getPlayInfo(String id){
System.out.println(id);
DefaultAcsClient client = initVodClient(accessKeyId, accessKeySecret);
GetPlayInfoResponse response = new GetPlayInfoResponse();
GetPlayInfoRequest request = new GetPlayInfoRequest();
request.setVideoId(id);
try {
response=client.getAcsResponse(request);
List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();
for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {
//获取播放URL
System.out.println(playInfo.getPlayURL());
}
} catch (ClientException e) {
e.printStackTrace();
}
}
通过ID获得播放凭证 前端获得ID+凭证 就可以播放加密视频了
@Override
public void getAuthInfo(String id){
System.out.println(id);
DefaultAcsClient client = initvodClient.initVodClient(accessKeyId, accessKeySecret);
GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
request.setVideoId(id);
try {
response=client.getAcsResponse(request);
System.out.println(response.getPlayAuth());
} catch (ClientException e) {
e.printStackTrace();
}
}
根据视频ID删除视频
@Override
public void delete(String id){
DefaultAcsClient client = initVodClient(accessKeyId, accessKeySecret);
DeleteVideoRequest request = new DeleteVideoRequest();
可以批量删除 传入list,将List转给以","分割的字符串
request.setVideoIds(id);
DeleteVideoResponse response = new DeleteVideoResponse();
try {
response=client.getAcsResponse(request);
} catch (ClientException e) {
e.printStackTrace();
}
}
创建controller 使用swagger测试 (注意 上传需要改yml配置 修改最大上传大小)
spring:
servlet:
multipart:
max-file-size: 1024MB
max-request-size: 1024MB
@RestController
@RequestMapping("/vod")
public class VodController {
@Autowired
private vodService vodService;
@PostMapping("/upload")
public R vodUpload(MultipartFile file){
vodService.testUploadStream(file);
return R.ok();
}
@DeleteMapping("{id}")
public R delete(@PathVariable String id){
vodService.delete(id);
return R.ok();
}
@GetMapping("/oss/{id}")
public R get(@PathVariable String id){
vodService.getPlayInfo(id);
return R.ok();
}
@GetMapping("/auth/{id}")
public R getAuth(@PathVariable String id){
vodService.getAuthInfo(id);
return R.ok();
}
}
前端添加阿里云视频播放器 请参考下面地址 功能很强大
https://player.alicdn.com/aliplayer/presentation/index.html?type=cover