日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里云视频点播——企业服务

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云视频点播——企业服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

阿里云-視頻點播(ApsaraVideo VoD,簡稱VoD)是集視頻采集、編輯、上傳、媒體資源管理、自動化轉碼處理(窄帶高清?)、視頻審核分析、分發加速于一體的一站式音視頻點播解決方案。

  • 我的視頻點播后臺鏈接:https://vod.console.aliyun.com/#/overview
  • 個人消費明細:https://usercenter2.aliyun.com/finance/fund-flow?spm=5176.12818093.ProductAndResource–ali–widget-home-billing-overview.dfinance.3be916d0ACbqBL

一、開通視頻點播服務,選擇按流量計費

這邊建議往賬號里充個幾毛錢,正常開發基本夠用了,用量小于50G是不收費的

阿里云視頻點播服務界面,未開通的點擊開通,開通后可以查看價格及服務介紹,點擊管理控制臺,就可以來到我們的一個視頻點播管理后臺界面了


參考文章:https://blog.csdn.net/qq_33857573/article/details/79564255

二、使用Java代碼整合阿里云視頻點播服務[參考服務端和上傳SDK]

  • 獲取視頻播放地址
  • 獲取視頻播放憑證
  • 上傳視頻到阿里云視頻點播服務
    • 注意:加密視頻不能直接通過視頻存儲id查看,而需要綁定域名,數據庫存儲的是視頻id,而不是視頻地址(視頻加密后,直接訪問地址無效,需要獲取視頻播放簽證,然后整合阿里云視頻播放器播放)

    服務端和客戶端SDK介紹

  • 引入相關依賴
  • <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.0</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.16.10</version> </dependency> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-kms</artifactId><version>2.10.1</version> </dependency>
  • 初始化:編寫視頻點播 初始化對象 [AccessKey初始化] InitObject
  • package com.xxz.test;import com.aliyun.oss.ClientException; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.profile.DefaultProfile;/*** 視頻點播 初始化對象 [AccessKey初始化]*/ public class InitObject {//填入AccessKey信息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;}}
  • Vod視頻點播相關測試TestVod.java
  • package com.xxz.test;import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest; import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;import java.util.List;/*** Vod視頻點播相關測試*/ public class TestVod {// 測試 阿里云 存儲視頻 id :b45893008b5871ed808f6723a78f0102public static void main(String[] args) throws Exception {//1.根據視頻id獲取視頻播放地址//(1)創建初始化對象 LTAI5tHGkW8GcwhFypERMW59 KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0DefaultAcsClient client = InitObject.initVodClient("LTAI5tHGkW8GcwhFypERMW59", "KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0");//(2)創建獲取視頻地址request和responseGetPlayInfoRequest request = new GetPlayInfoRequest();GetPlayInfoResponse response = new GetPlayInfoResponse();//(3)向request對象里面設置視頻idrequest.setVideoId("b45893008b5871ed808f6723a78f0102");//(4)調用初始化對象里面的方法,傳遞request,獲取數據response = client.getAcsResponse(request);//獲取路徑集合List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();//播放地址for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {System.out.println("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n");}//Base信息System.out.println("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n");}}

    報錯 “Forbidden.RAM-You are not authorized to operate this resource, or this API does not support RAM“

    • 解決方案鏈接:https://blog.csdn.net/KiddoKid/article/details/122993446

    加密視頻查看方式(獲取簽證、整合阿里云播放器才可播放)

    package com.xxz.test;import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.vod.model.v20170321.*; import org.apache.commons.collections4.Get;import java.util.List;/*** Vod視頻點播相關測試*/ public class TestVod {public static void main(String[] args) throws Exception{//測試非加密視頻notSecretVideoShow();//測試加密視頻hasSecretVideoShow();}// 測試 阿里云 存儲視頻 id :b45893008b5871ed808f6723a78f0102 [非加密視頻]public static void notSecretVideoShow() throws Exception {//1.根據視頻id獲取視頻播放地址//(1)創建初始化對象 LTAI5tHGkW8GcwhFypERMW59 KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0DefaultAcsClient client = InitObject.initVodClient("LTAI5tHGkW8GcwhFypERMW59", "KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0");//(2)創建獲取視頻地址request和responseGetPlayInfoRequest request = new GetPlayInfoRequest();GetPlayInfoResponse response = new GetPlayInfoResponse();//(3)向request對象里面設置視頻idrequest.setVideoId("b45893008b5871ed808f6723a78f0102");//(4)調用初始化對象里面的方法,傳遞request,獲取數據response = client.getAcsResponse(request);//獲取路徑集合List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();//播放地址for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {System.out.println("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n");}//Base信息System.out.println("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n");}// 測試 阿里云 存儲視頻 id :b45893008b5871ed808f6723a78f0102 [加密視頻]public static void hasSecretVideoShow() throws Exception {//1.根據視頻id獲取視頻播放地址//(1)創建初始化對象 LTAI5tHGkW8GcwhFypERMW59 KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0DefaultAcsClient client = InitObject.initVodClient("LTAI5tHGkW8GcwhFypERMW59", "KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0");//(2)創建獲取視頻地址request和responseGetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();//(3)向request對象里面設置視頻idrequest.setVideoId("b45893008b5871ed808f6723a78f0102");//(4)調用初始化對象里面的方法,傳遞request,獲取數據response = client.getAcsResponse(request);//Auth簽證信息System.out.println("PlayAuth: " + response.getPlayAuth());}}

    進入Java SDK-媒體資源管理,定位到刪除視頻目錄頁中DeleteVideo


    視頻點播-文件上傳SDK(客戶端上傳、服務端上傳)

  • 安裝上傳SDK(aliyun-java-vod-upload-1…4.9.jar)
  • 下載aliyun-java-vod-upload-1…4.9.jar
  • 解壓后定位到lib目錄中,地址欄輸入cmd進入控制臺,輸入maven安裝指令
    • 指令:mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.15 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.15.jar
  • simple目錄包含實現上傳案例代碼,直接使用即可

  • 上傳測試UploadVod.java
  • package com.xxz.test;import com.aliyun.vod.upload.impl.UploadVideoImpl; import com.aliyun.vod.upload.req.UploadVideoRequest; import com.aliyun.vod.upload.resp.UploadVideoResponse;/*** 上傳案例代碼*/ public class UploadVod {public static void main(String[] args) {String accessKeyId = "LTAI5tHGkW8GcwhFypERMW59";String accessKeySecret = "KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0";//上傳之后文件名稱String title = "6 - What If Want to Move Faster - upload by sdk";//本地文件路徑String fileName = "E:\\1672744612359.mp4";//調用上傳視頻方法testUploadVideo(accessKeyId, accessKeySecret, title, fileName);}/*** 本地文件上傳接口** @param accessKeyId* @param accessKeySecret* @param title* @param fileName*/private static void testUploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) {//通過必要參數 獲取視頻上傳請求對象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);System.out.print("RequestId=" + response.getRequestId() + "\n"); //請求視頻點播服務的請求IDif (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");}}}
  • application.yml配置文件
  • #服務端口 server.port=8003 #服務名 spring.application.name=service-vod#環境設置:dev、test、prod spring.profiles.active=dev#阿里云 OSS #不同的服務器,地址不同 aliyun.vod.file.keyid=LTAI5tHGkW8GcwhFypERMW59 aliyun.vod.file.keysecret=KUNfdGLjxkyvCVYS7iL7ovSIQxIJG0#報錯 The field file exceeds its maximum permitted size of 1048576 bytes. spring.servlet.multipart.max-file-size=50MB spring.servlet.multipart.max-request-size=50MB
  • 視頻點播啟動類
  • package com.xxz.vod;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Component;/*** 阿里云 視頻點播 vod 啟動類*/ @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) @ComponentScan(basePackages = {"com.xxz"}) public class VodApplicatioin {public static void main(String[] args) {SpringApplication.run(VodApplicatioin.class, args);}}
  • 視頻點播-上傳視頻:常量類ConstantVodUtils.java
  • package com.xxz.vod.utils;import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;/*** 視頻點播 - 視頻上傳 常量工具類 InitialzingBean */ @Component public class ConstantVodUtils implements InitializingBean {@Value("${aliyun.vod.file.keyid}")private String keyid;@Value("${aliyun.vod.file.keysecret}")private String keysecret;public static String END_POIND;public static String ACCESS_KEY_ID;/*** 當容器加載完之后執行* @throws Exception*/@Overridepublic void afterPropertiesSet() throws Exception {END_POIND = keyid;ACCESS_KEY_ID = keysecret;} }
  • 視頻點播-上傳視頻:業務類VodServiceImpl.java - > uploadAliyunVideo(){}
  • package com.xxz.vod.service.impl;import com.aliyun.vod.upload.impl.UploadVideoImpl; import com.aliyun.vod.upload.req.UploadStreamRequest; import com.aliyun.vod.upload.req.UploadURLStreamRequest; import com.aliyun.vod.upload.resp.UploadStreamResponse; import com.aliyun.vod.upload.resp.UploadURLStreamResponse; import com.xxz.vod.service.VodService; import com.xxz.vod.utils.ConstantVodUtils; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile;import java.io.IOException; import java.io.InputStream;/*** 視頻點播-上傳視頻 業務類*/ @Service public class VodServiceImpl implements VodService {/*** //上傳視頻* @param file* @return*/@Overridepublic String uploadAliyunVideo(MultipartFile file) {try{//accessKeyId , accessKeySecret//fileName: 上傳文件原始名稱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.END_POIND, title, fileName, inputStream);/* 是否顯示水印(可選),指定模板組ID時,根據模板組配置確定是否顯示水印*/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){return null;}} }
  • 視頻點播-上傳視頻:控制器VodController.java
  • package com.xxz.vod.controller;import com.xxz.util.Result; import com.xxz.vod.service.VodService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;@RestController @RequestMapping("/edu/video") @CrossOrigin //跨域 public class VodController {@Autowiredprivate VodService vodService;//上傳視頻到 阿里云@PostMapping("uploadAliyunVideo")public Result uploadAliyunVideo(MultipartFile file){//上傳視頻String videoId = vodService.uploadAliyunVideo(file);return Result.ok().data("videoId", videoId);}}
  • SpringBoot 項目在文件上傳時出現了 報錯Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
    的錯誤,顯示文件的大小超出了允許的范圍。原因是 SpringBoot內嵌的 tomcat 默認的所有上傳的文件大小為 1MB,超出這個大小就會報錯,解決這個問題需要在application.properties配置文件更改以下兩個默認。
    • multipart.maxFileSize
    • multipart.maxRequestSize
    • 解決方案呢,要根據SpringBoot的版本來確定,以下列舉出了幾種情況,可以根據自己項目的SpringBoot版本來對應:把默認的文件的大小限制修改一下即可。以下是我項目中的用到的文件大小限制,改成50MB即可滿足我的需求了。

    SpringBoot 1.3.x 之前

    multipart.maxFileSize=50Mb multipart.maxRequestSize=50Mb

    SpringBoot 1.4.x

    spring.http.multipart.maxFileSize=50Mb spring.http.multipart.maxRequestSize=50Mb

    SpringBoot 2.0.x之后

    #最大上傳單個文件大小: 默認1M spring.servlet.multipart.max-file-size=50MB #最大值總上傳的數據大小: 默認10M spring.servlet.multipart.max-request-size=50MB

    Swagger測試結果

  • http狀態碼413,并提示Request Entity Too Large的解決辦法鏈接:https://www.cnblogs.com/lcword/p/16067649.html

  • 刪除阿里云-視頻點播SDK(編寫業務方法)
    • 創建客戶端
    package com.xxz.vod.utils;import com.aliyun.oss.ClientException; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.profile.DefaultProfile;/*** 視頻點播 初始化對象 [AccessKey初始化... 初始化操作視頻點播 目錄 客戶端]*/ public class InitVodClient {//填入AccessKey信息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;} }
    • 阿里云視頻點播-常量類
    package com.xxz.vod.utils;import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;/*** 視頻點播 - 視頻上傳 常量工具類*/ @Component public class ConstantVodUtils implements InitializingBean {@Value(value = "${aliyun.vod.file.keyid}")private String keyid;@Value("${aliyun.vod.file.keysecret}")private String keysecret;public static String END_POIND;public static String ACCESS_KEY_ID;/*** 當容器加載完之后執行* @throws Exception*/@Overridepublic void afterPropertiesSet() throws Exception {END_POIND = keysecret;ACCESS_KEY_ID = keyid;} }
    • 阿里云視頻點播-刪除視頻 > 控制器方法
    package com.xxz.vod.controller;import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest; import com.xxz.base.exception.GuiguExcetion; import com.xxz.util.Result; import com.xxz.vod.service.VodService; import com.xxz.vod.utils.ConstantVodUtils; import com.xxz.vod.utils.InitVodClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile;@RestController @RequestMapping("/vod/video") @CrossOrigin //跨域 public class VodController {@Autowiredprivate VodService vodService;//上傳視頻到 阿里云@PostMapping("uploadAliyunVideo")public Result uploadAliyunVideo(MultipartFile file){//上傳視頻String videoId = vodService.uploadAliyunVideo(file);return Result.ok().data("videoId", videoId);}@DeleteMapping("removeAliyunVideo/{videoId}")public Result removeAliyunVideo(@PathVariable String videoId){try{//初始化對象DefaultAcsClient client = InitVodClient.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_ID);//創建刪除視頻request對象DeleteVideoRequest request = new DeleteVideoRequest();//向request設置視頻idrequest.setVideoIds(videoId);//調用初始化對象的方法實現刪除client.getAcsResponse(request);}catch (Exception e){e.printStackTrace();//拋出異常throw new GuiguExcetion(20001, "刪除視頻失敗");}return Result.ok();}}

    總結

    以上是生活随笔為你收集整理的阿里云视频点播——企业服务的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。