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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

阿里云长视频上传以及返回播放地址

發布時間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云长视频上传以及返回播放地址 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

視頻上傳

  • 下載上傳SDK
  • 工具類

下載上傳SDK

阿里云視頻上傳SDK下載

工具類

我自己只用到了本地上傳,所以只貼出本地上傳的Util,其他上傳方式可以自己看demo
AK信息在控制臺右上角頭像查看

package com.example.demo.utils;import com.alibaba.fastjson.JSONObject; import com.aliyun.vod.upload.impl.UploadVideoImpl; import com.aliyun.vod.upload.req.*; import com.aliyun.vod.upload.resp.*; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest; import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse; import com.google.gson.Gson;/*** 以下Java示例代碼演示了如何在服務端上傳媒資文件至視頻點播,媒資類型支持音頻、視頻和圖片。* <p>* 一、音視頻上傳目前支持4種方式上傳:** 1.上傳本地文件,使用分片上傳,并支持斷點續傳,參見testUploadVideo函數。* 1.1 當斷點續傳關閉時,最大支持上傳任務執行時間為3000秒,具體可上傳文件大小與您的網絡帶寬及磁盤讀寫能力有關。* 1.2 當斷點續傳開啟時,最大支持48.8TB的單個文件,注意,斷點續傳開啟后,上傳任務執行過程中,同時會將當前上傳位置寫入本地磁盤文件,影響您上傳文件的速度,請您根據文件大小選擇是否開啟** 2.上傳網絡流,可指定文件URL進行上傳,支持斷點續傳,最大支持48.8TB的單個文件。* 該上傳方式需要先將網絡文件下載到本地磁盤,再進行上傳,所以要保證本地磁盤有充足的空間。參見testUploadURLStream函數。** 3.上傳文件流,可指定本地文件進行上傳,不支持斷點續傳,最大支持5GB的單個文件。參見testUploadFileStream函數。** 4.流式上傳,可指定輸入流進行上傳,支持文件流和網絡流等,不支持斷點續傳,最大支持5GB的單個文件。參見testUploadStream函數。* <p>** 二、圖片上傳目前支持2種方式上傳:* 1.上傳本地文件,不支持斷點續傳,最大支持5GB的單個文件,參見testUploadImageLocalFile函數* 2.上傳文件流和網絡流,InputStream參數必選,不支持斷點續傳,最大支持5GB的單個文件。參見testUploadImageStream函數。* 注:圖片上傳完成后,會返回圖片ID和圖片地址,也可通過GetImageInfo查詢圖片信息,參見接口文檔 https://help.aliyun.com/document_detail/89742.html* <p>** 三、m3u8文件上傳目前支持2種方式:* 1.上傳本地m3u8音視頻文件(包括所有分片文件)到點播,需指定本地m3u8索引文件地址和所有分片地址。* 2.上傳網絡m3u8音視頻文件(包括所有分片文件)到點播,需指定m3u8索引文件和分片文件的URL地址。** 注:* 1) 上傳網絡m3u8音視頻文件時需要保證地址可訪問,如果有權限限制,請設置帶簽名信息的地址,且保證足夠長的有效期,防止地址無法訪問導致上傳失敗* 2) m3u8文件上傳暫不支持進度回調* <p>** 四、上傳進度回調通知:* 1.默認上傳進度回調函數:視頻點播上傳SDK內部默認開啟上傳進度回調函數,輸出不同事件通知的日志,您可以設置關閉該上傳進度通知及日志輸出;* 2.自定義上傳進度回調函數:您可根據自已的業務場景重新定義不同事件處理的方式,只需要修改上傳回調示例函數即可。* <p>** 五、輔助媒資上傳目前支持2種方式:* 1.上傳本地文件,不支持斷點續傳,最大支持5GB的單個文件,參見testUploadAttachedMediaLocalFile函數* 2.上傳文件流和網絡流,InputStream參數必選,不支持斷點續傳,最大支持5GB的單個文件。參見testUploadAttachedMediaStream函數。* <p>** 六、支持STS方式上傳:* 1.您需要實現VoDRefreshSTSTokenListener接口的onRefreshSTSToken方法,用于生成STS信息,* 當文件上傳時間超過STS過期時間時,SDK內部會定期調用此方法刷新您的STS信息進行后續文件的上傳。* <p>** 七、可指定上傳腳本部署的ECS區域(設置Request的EcsRegionId參數,取值參考存儲區域標識:https://help.aliyun.com/document_detail/98194.html),* 如果與點播存儲(OSS)區域相同,則自動使用內網上傳文件至存儲,上傳更快且更省公網流量* 由于點播API只提供外網域名訪問,因此部署上傳腳本的ECS服務器必須具有訪問外網的權限。** 注意:* 請替換示例中的必選參數,示例中的可選參數如果您不需要設置,請將其刪除,以免設置無效參數值與您的預期不符。*/public class UploadVideoUtil {//賬號AK信息請填寫(必選)private static final String accessKeyId = "<Your accessKeyId>";//賬號AK信息請填寫(必選)private static final String accessKeySecret = "<Your accessKeySecret>";//批量上傳邏輯://先上傳文件,返回videoid,先把videoid存到數據庫里,等待成功回調,在回調時數據庫查找對應videoid,存放視頻地址//單視頻上傳邏輯://上傳文件,等待上傳完成,再拿播放地址存到數據庫public static void main(String[] args) {JSONObject json = UploadVideo("這里是視頻上傳到阿里的標題,無關緊要","這里是文件本地絕對路徑,記得轉義");try {//注意!如果不sleep的話視頻剛上傳成功的狀態是跟不上運行的//會報錯視頻狀態不是上傳成功狀態//sleep時間按照自己視頻大小去改Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}String url = GetPlayInfo((String)json.get("vid"));System.out.println(url);}/*** 本地文件上傳接口** @param accessKeyId* @param accessKeySecret* @param title* @param fileName*/public static JSONObject UploadVideo(String title, String fileName) {UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);/* 可指定分片上傳時每個分片的大小,默認為2M字節 */request.setPartSize(2 * 1024 * 1024L);/* 可指定分片上傳時的并發線程數,默認為1,(注:該配置會占用服務器CPU資源,需根據服務器情況指定)*/request.setTaskNum(1);/* 是否開啟斷點續傳, 默認斷點續傳功能關閉。當網絡不穩定或者程序崩潰時,再次發起相同上傳請求,可以繼續未完成的上傳任務,適用于超時3000秒仍不能上傳完成的大文件。注意: 斷點續傳開啟后,會在上傳過程中將上傳位置寫入本地磁盤文件,影響文件上傳速度,請您根據實際情況選擇是否開啟*///request.setEnableCheckpoint(false);/* OSS慢請求日志打印超時時間,是指每個分片上傳時間超過該閾值時會打印debug日志,如果想屏蔽此日志,請調整該閾值。單位: 毫秒,默認為300000毫秒*///request.setSlowRequestsThreshold(300000L);/* 可指定每個分片慢請求時打印日志的時間閾值,默認為300s*///request.setSlowRequestsThreshold(300000L);/* 是否顯示水印(可選),指定模板組ID時,根據模板組配置確定是否顯示水印*/request.setIsShowWaterMark(false);/* 設置上傳完成后的回調URL(可選),建議您通過點播控制臺配置事件通知,參見文檔 https://help.aliyun.com/document_detail/55627.html *///request.setCallback("http://callback.sample.com");/* 自定義消息回調設置(可選),參數說明參考文檔 https://help.aliyun.com/document_detail/86952.html#UserData */// request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}");/* 視頻分類ID(可選) *///request.setCateId(0);/* 視頻標簽,多個用逗號分隔(可選) *///request.setTags("標簽1,標簽2");/* 視頻描述(可選) *///request.setDescription("視頻描述");/* 封面圖片(可選) *///request.setCoverURL("http://cover.sample.com/sample.jpg");/* 模板組ID(可選) *///request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d");/* 工作流ID(可選) *///request.setWorkflowId("d4430d07361f0*be1339577859b0177b");/* 存儲區域(可選) *///request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");/* 開啟默認上傳進度回調 *///request.setPrintProgress(false);/* 設置自定義上傳進度回調 (必須繼承 VoDProgressListener) *///request.setProgressListener(new PutObjectProgressListener());/* 設置您實現的生成STS信息的接口實現類*/// request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());/* 設置應用ID*///request.setAppId("app-1000000");/* 點播服務接入點 *///request.setApiRegionId("cn-shanghai");/* ECS部署區域*/// request.setEcsRegionId("cn-shanghai");UploadVideoImpl uploader = new UploadVideoImpl();UploadVideoResponse response = uploader.uploadVideo(request);System.out.print("RequestId=" + response.getRequestId() + "\n"); //請求視頻點播服務的請求IDJSONObject json = new JSONObject();if (response.isSuccess()) {System.out.print("VideoId=" + response.getVideoId() + "\n");//這里我用json接收vid以后批量上傳會用到json.put("status",1);json.put("vid",response.getVideoId());return json;} else {/* 上傳失敗時,VideoId為空,此時需要根據返回錯誤碼分析具體錯誤原因 */if(response.getVideoId()==null||response.getVideoId()=="") {json.put("status",2);//這里是上傳失敗的邏輯,可以根據錯誤代碼自己百度}System.out.print("ErrorCode=" + response.getCode() + "\n");System.out.print("ErrorMessage=" + response.getMessage() + "\n");return json;}}/*** 獲取上傳視頻地址接口** @param vid*/public static String GetPlayInfo(String vid) {// 創建SubmitMediaInfoJob實例并初始化DefaultProfile profile = DefaultProfile.getProfile("cn-Shanghai", // // 點播服務所在的地域ID,中國大陸地域請填cn-shanghaiaccessKeyId, // 您的AccessKey IDaccessKeySecret ); // 您的AccessKey SecretIAcsClient client = new DefaultAcsClient(profile);GetPlayInfoRequest request1 = new GetPlayInfoRequest();// 視頻ID。request1.setVideoId(vid);String url = null;try {GetPlayInfoResponse response1 = client.getAcsResponse(request1);System.out.println(new Gson().toJson(response1));for (GetPlayInfoResponse.PlayInfo playInfo : response1.getPlayInfoList()) {// 播放地址System.out.println("PlayInfo.PlayURL = " + playInfo.getPlayURL());String str = playInfo.getPlayURL();//這里會返回m3u8和mp4格式,m3u8需要轉碼,看自己情況//如果播放地址后綴為mp4返回if(str != null || str != "") {if(str.substring(str.length()-3,str.length()).equals("mp4")) {url = playInfo.getPlayURL();} }}return url;} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {System.out.println("ErrCode:" + e.getErrCode());System.out.println("ErrMsg:" + e.getErrMsg());System.out.println("RequestId:" + e.getRequestId());}return null;}}

總結

以上是生活随笔為你收集整理的阿里云长视频上传以及返回播放地址的全部內容,希望文章能夠幫你解決所遇到的問題。

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