今天学习使用阿里云视频点播功能,现在做个总结。首先需要在阿里云的视频点播服务开通功能,开通后进入控制管理台即可看见各种数据。
阿里云学习文档:
https://help.aliyun.com/document_detail/51512.html?spm=5176.8413026.J_2349663800.5.188011cfl3ksIV
根据文档,要成功上传要分为3步
1.获取视频播放地址
2.获取视频播放凭证
3.上传视频到阿里云视频点播服务
因为上传视频可以进行加密,加密之后,使用加密之后地址不能进行视频播放,在数据库存储不存地址,而是存视频id(可以取得地址和凭证)
大概分为4步:
1.初始化对象2.创建request,response对象3.向request对象中设置值4.调用方法
所以我们首先创建一个初始化的类用于初始化对象
package com.hzh.vodtest; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.profile.DefaultProfile; public class InitObject { 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; } }
然后编写方法根据id获取播放地址
public static void getPlayUrl() throws ClientException{ // 1.根据视频id获取视频播放地址 // 创建初始化对象 DefaultAcsClient client = InitObject.initVodClient("马赛克","马赛克"); // 创建获取视频地址的request对象和response对象 GetPlayInfoRequest request = new GetPlayInfoRequest(); GetPlayInfoResponse response = new GetPlayInfoResponse(); // 向request对象中设置视频id request.setVideoId("dd6dbdd3962640f6baa58391907d00ca"); // 调用初始化对象里的方法传递request,获取数据 response = client.getAcsResponse(request); List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList(); //播放地址 for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) { System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n"); } //Base信息 System.out.print("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n"); }
再编写方法用于获取播放凭证
public static void getPlayAuth() throws Exception{ // 2.根据视频id获取播放凭证 // 创建初始化对象 DefaultAcsClient client = InitObject.initVodClient("马赛克","马赛克"); // 创建获取视频凭证的request和response GetVideoInfoResponse response = new GetVideoInfoResponse(); GetVideoInfoRequest request = new GetVideoInfoRequest(); // 向request中设置视频id request.setVideoId("dd6dbdd3962640f6baa58391907d00ca"); // 调用初始化对象的方法得到凭证 response = client.getAcsResponse(request); }
最后上传视频
public static void main(String[] args) throws ClientException { String accessKeyId = "马赛克"; String accessKeySecret = "马赛克"; String title = "周杰伦-Mojito(高清).mp4"; //上传之后文件名称 String fileName = "D:/6 - What If I Want to Move Faster.mp4"; //本地文件路径和名称 //上传视频的方法 UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName); /* 可指定分片上传时每个分片的大小,默认为2M字节 */ request.setPartSize(2 * 1024 * 1024L); /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/ request.setTaskNum(1); UploadVideoImpl uploader = new UploadVideoImpl(); UploadVideoResponse response = uploader.uploadVideo(request); if (response.isSuccess()) { System.out.print("VideoId=" + response.getVideoId() + "\n"); } else { /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */ System.out.print("VideoId=" + response.getVideoId() + "\n"); System.out.print("ErrorCode=" + response.getCode() + "\n"); System.out.print("ErrorMessage=" + response.getMessage() + "\n"); } }
ps:马赛克是自己阿里云账户的accessKeyId和accessKeySecret
ps:因为现在aliyun-sdk-vod-upload还没有开源,所以需要自己手动下载依赖,在sdk文档中下载依赖的zip后,在cmd命令行中输入命令mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.13 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.13.jar,成功后可以导入
