微短劇解決方案提供通過API進行CDN分發加速播放的能力。通過閱讀本文,您可以了解微短劇CDN分發加速播放作業的基本API調用方法。
分發播放
概述
視頻點播支持播放音頻和視頻文件,您可以通過控制臺預覽、集成阿里云播放器SDK和集成第三方播放器進行播放。
視頻點播(VOD)支持音頻和視頻文件的播放,文件來源包括:
選擇轉碼方式上傳的文件經轉碼處理后產生的輸出流文件;
選擇不轉碼方式上傳的文件作為原畫用于播放,目前僅以下格式支持不轉碼直接播放:MP4、FLV、M3U8、MP3、WEBM。
播放方式
通過播放地址播放
存儲在視頻點播中的音視頻,獲取其播放地址后,可使用阿里云播放器或其他第三方播放器(系統原生播放器、開源播放器、自研播放器等)進行播放。本文為您介紹點播音視頻播放的流程、獲取播放地址的方式和播放說明。
通過播放憑證播放
如果您對存儲在視頻點播中的音視頻播放有更高的安全性要求,則可以使用阿里云播放器SDK通過音視頻的播放憑證(PlayAuth)自動獲取播放地址進行播放。因播放憑證具有時效性、與視頻一一對應、不能混用和重復使用等特點,當憑證過期或憑證錯誤時都將無法獲取到對應的播放地址。本文為您介紹如何通過API獲取音視頻的播放憑證并使用阿里云播放器SDK進行播放。
獲取播放地址
視頻點播支持通過事件通知和API/SDK兩種方式獲取播放地址。
事件通知
通過接收單個清晰度轉碼完成或全部清晰度轉碼完成的事件通知獲取到播放地址,保存到用戶自己的服務端,播放時訪問自己的服務端獲取到存儲的播放地址。
消息回調獲取到的播放地址為固定地址,若開啟了URL鑒權則需要自己生成帶鑒權的播放地址,否則無法播放。
如果您禁用或刪除了舊的域名,保存的播放地址取出時請替換成新的域名,否則無法播放。
如果您配置了視頻加密,返回的播放地址需要經過播放器解密后才可進行播放。
API/SDK
通過調用GetPlayInfo - 獲取音視頻播放地址接口SDK/API實時獲取播放地址,需要在上傳音視頻文件時保存好視頻ID。示例Demo如下:
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>description</b> :
* <p>使用AK&SK初始化賬號Client</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.vod20170321.Client createClient() throws Exception {
// 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
// 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:http://bestwisewords.com/document_detail/378657.html。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 請參考 https://api.aliyun.com/product/vod
config.endpoint = "vod.cn-shanghai.aliyuncs.com";
return new com.aliyun.vod20170321.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.vod20170321.Client client = Sample.createClient();
com.aliyun.vod20170321.models.GetPlayInfoRequest getPlayInfoRequest = new com.aliyun.vod20170321.models.GetPlayInfoRequest();
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 復制代碼運行請自行打印 API 的返回值
client.getPlayInfoWithOptions(getPlayInfoRequest, runtime);
} catch (TeaException error) {
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
System.out.println(error.getMessage());
// 診斷地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
System.out.println(error.getMessage());
// 診斷地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
獲取播放憑證
調用GetVideoPlayAuth獲取音視頻的播放憑證(PlayAuth),阿里云播放器SDK通過音視頻的播放憑證自動換取播放地址進行播放。示例Demo如下:
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>description</b> :
* <p>使用AK&SK初始化賬號Client</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.vod20170321.Client createClient() throws Exception {
// 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
// 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:http://bestwisewords.com/document_detail/378657.html。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 請參考 https://api.aliyun.com/product/vod
config.endpoint = "vod.cn-shanghai.aliyuncs.com";
return new com.aliyun.vod20170321.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.vod20170321.Client client = Sample.createClient();
com.aliyun.vod20170321.models.GetVideoPlayAuthRequest getVideoPlayAuthRequest = new com.aliyun.vod20170321.models.GetVideoPlayAuthRequest();
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 復制代碼運行請自行打印 API 的返回值
client.getVideoPlayAuthWithOptions(getVideoPlayAuthRequest, runtime);
} catch (TeaException error) {
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
System.out.println(error.getMessage());
// 診斷地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
// 錯誤 message
System.out.println(error.getMessage());
// 診斷地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
常見問題
視頻點播播放問題排查思路:
前提條件
您已通過點播控制臺或API/SDK方式獲取到播放地址。
操作步驟
登錄視頻點播控制臺。
在左側導航欄選擇工具 > 視頻播放問題排查。
在視頻播放問題排查頁面,輸入需檢測的視頻播放鏈接并選擇域名類型,單擊開始檢測。
檢測完成后,會生成檢測結果,針對檢測出的異常項您可參考解決建議處理異常。
說明
針對異常結果進行修改后,若檢測的視頻播放URL未改變,則可在檢測結果頁面單擊重新檢測進行檢測。一旦檢測的URL發生了改變,則需返回到視頻播放問題排查頁面,重新輸入視頻播放URL進行檢測。
域名類型為加速域名的視頻播放鏈接涉及的檢測項如下:
檢測項
檢測參數
描述
域名檢測
域名狀態
檢測域名的配置狀態。
CNAME檢測
CNAME狀態
檢測域名的CNAME配置狀態。
HTTPS證書檢測
證書狀態
檢測HTTPS證書的配置狀態。
播放鑒權檢測
鑒權配置
檢測點播URL鑒權的配置狀態(開啟/關閉)。
鑒權狀態
檢測點播URL鑒權成功或鑒權失敗原因。
UA黑/白名單
名單類型
檢測UA黑/白名單的配置狀態及配置類型。
防盜鏈檢測
配置狀態
檢測防盜鏈的配置狀態(已配置/未配置)。
跨域檢測
跨域狀態配置
檢測跨域的配置狀態(已配置/未配置)。
欠費檢測
點播服務是否可用
檢測點播服務的可用狀態(正常/不可用)。
是否欠費
檢測賬號是否欠費。
欠費是否超期
檢測賬號欠費的超期狀態。
域名類型為OSS域名的視頻播放鏈接涉及的檢測項如下:
檢測項
檢測參數
描述
OSS Bucket檢測
存儲訪問權限
檢測OSS Bucket的存儲訪問權限類型。
存儲狀態
檢測OSS Bucket的存儲配置狀態。
簽名狀態
說明 僅當OSS Bucket的存儲訪問權限為私有Bucket時,才展示該檢測參數。
檢測OSS Bucket的簽名狀態。