今天學習使用阿里雲視頻點播功能,現在做個總結。首先需要在阿里雲的視頻點播服務開通功能,開通后進入控制管理台即可看見各種數據。
阿里雲學習文檔:
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,成功后可以導入
