使用阿里雲視訊點播功能demo
阿新 • • 發佈:2021-01-19
今天學習使用阿里雲視訊點播功能,現在做個總結。首先需要在阿里雲的視訊點播服務開通功能,開通後進入控制管理臺即可看見各種資料。
阿里雲學習文件: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.呼叫方法 所以我們首先建立一個初始化的類用於初始化物件packagecom.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,成功後可以匯入