阿里云的视频点播

文档&SDK学习(自己查看)

代码实现

1.获取视频的播放地址

2.获取视频的播放凭证

 

3.上传视频到阿里云视频点播服务

 

sdk的安装(服务器sdk安装)

手动下载上传视频的依赖(因为没有开源)

命令安装

mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.11 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.11.jar

 

配置文件
#server.port=8003
#spring.application.name=service-vod
#spring.profiles.active=dev
#id密钥
#aliyun.vod.file.keyid=LTAI4FqTqfScRaXGUsDXWyPA
#aliyun.vod.file.keysecret=kJkzK5EXZScqMW1fMvheVvwM9pzKtB
#spring.servlet.multipart.max-file-size=1024MB
#spring.servlet.multipart.max-request-size=1024MB
#spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848


@Api(description="上传视频")
@RestController
@RequestMapping("/eduvod/video")
//@CrossOrigin
public class VodController {
@Autowired
private VodService vodService;

//上传视频到阿里云
@ApiOperation(value = "上传视频到阿里云")
@PostMapping("uploadAlyVideo")
public R uploadAlyVideo(MultipartFile file) {
//返回上传视频id
String videoId = vodService.uploadVideoAly(file);
return R.success().data("videoId",videoId);
}

//根据视频id删除阿里云视频
@ApiOperation(value = "根据视频id删除阿里云视频")
@DeleteMapping("removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable String id) {
vodService.removeAlyVideo(id);
return R.success();
}

//删除多个阿里云视频的方法
//参数多个视频id List videoIdList
@ApiOperation(value = "删除多个阿里云视频")
@DeleteMapping("delete-batch")
public R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList) {
vodService.removeMoreAlyVideo(videoIdList);
return R.success();
}

//根据视频id获取视频凭证
@GetMapping("getPlayAuth/{id}")
public R getPlayAuth(@PathVariable String id) {
try {
//创建初始化对象
DefaultAcsClient client =
InitVodClient.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
//创建获取凭证request和response对象
GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
//向request设置视频id
request.setVideoId(id);
//调用方法得到凭证
GetVideoPlayAuthResponse response = client.getAcsResponse(request);
String playAuth = response.getPlayAuth();
return R.success().data("playAuth",playAuth);
}catch(Exception e) {
throw new MSException(20001,"获取凭证失败");
}
}

}

 

 

 


//上传视频到阿里云
@Override
public String uploadVideoAly(MultipartFile file) {
try {
//accessKeyId, accessKeySecret
//fileName:上传文件原始名称
// 01.03.09.mp4
String fileName = file.getOriginalFilename();
//title:上传之后显示名称
String title = fileName.substring(0, fileName.lastIndexOf("."));
//inputStream:上传文件输入流
InputStream inputStream = file.getInputStream();
UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);

UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);

String videoId = null;
if (response.isSuccess()) {
videoId = response.getVideoId();
} else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因
videoId = response.getVideoId();
}
return videoId;
}catch(Exception e) {
e.printStackTrace();
return null;
}
}

 

 

//根据视频id删除阿里云视频
@Override
public void removeAlyVideo(String id) {
try {
//初始化对象
DefaultAcsClient client = InitVodClient.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
//创建删除视频request对象
DeleteVideoRequest request = new DeleteVideoRequest();
//向request设置视频id
request.setVideoIds(id);
//调用初始化对象的方法实现删除
client.getAcsResponse(request);
}catch(Exception e) {
e.printStackTrace();
throw new MSException(20001,"删除视频失败");
}
}

//删除多个阿里云视频的方法
@Override
public void removeMoreAlyVideo(List videoIdList) {
try {
//初始化对象
DefaultAcsClient client = InitVodClient.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
//创建删除视频request对象
DeleteVideoRequest request = new DeleteVideoRequest();

//videoIdList转换成1,2,3形式
String videoIds = StringUtils.join(videoIdList.toArray(), ",");

//向request设置视频id
request.setVideoIds(videoIds);
//调用初始化对象的方法实现删除
client.getAcsResponse(request);

}catch(Exception e) {
e.printStackTrace();
throw new MSException(20001,"删除视频失败");
}
}

 

posted @ 2021-03-09 08:42  阿布v  阅读(160)  评论(0)    收藏  举报