微短劇解決方案提供通過API進行媒體管理的能力。通過閱讀本文,您可以了解微短劇媒體管理的基本API調用方法。
使用微短劇媒體管理前,請確保您已基本了解什么是媒資管理。詳情媒資管理概述。
媒資搜索
概述
調用SearchMedia接口,用于搜索視頻點播生產的視頻、音頻和圖片等媒資信息,可實現在視頻點播中進行指定返回字段、精確匹配、模糊匹配、多值查詢、范圍查詢、排序字段等多方式多維度的搜索查詢。
接口說明
獲取命中數據條數限制說明如下:
方法一:分頁遍歷
對于命中的搜索結果,您可以通過設置分頁參數“PageNo”(頁碼)和“PageSize”(每頁顯示的記錄數)來逐步遍歷最多 5000 條數據。如果搜索結果超出了 5000 條,為了保證有效地遍歷數據,請調整搜索條件以縮小結果范圍。需要注意的是,此方法無法遍歷完整數據集。若要遍歷更多數據,請參考方法二。
方法二:全量遍歷(限音視頻搜索)
此方法適用于視頻和音頻內容的搜索,支持遍歷最多 200 萬條的全部搜索結果。如果搜索結果數量超過 200 萬條,您應該通過增加更多篩選條件來減少結果數量。使用此方法時,除了“PageNo”和“PageSize”,您還需使用“ScrollToken”參數實現分頁。請注意,每次僅支持向后遍歷最多 100 條記錄。 使用“PageSize”為 20 為例,以下是分頁邏輯:
若“PageNo”為 1,您可以查詢接下來的最多 5 頁數據。
若“PageNo”為 2,您可以查詢接下來的最多 6 頁數據。
請確保在搜索時合理設置分頁參數,并根據結果集大小選擇適當的遍歷方法。
示例
用SearchMedia接口示例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.SearchMediaRequest searchMediaRequest = new com.aliyun.vod20170321.models.SearchMediaRequest();
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 復制代碼運行請自行打印 API 的返回值
client.searchMediaWithOptions(searchMediaRequest, 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);
}
}
}
獲取單個音視頻信息
概述
調用GetVideoInfo通過音/視頻ID來獲取單個音視頻的標題、描述、時長、封面URL、狀態、創建時間、大小、截圖、分類和標簽等信息。
接口說明
音視頻上傳完成后,點播會對上傳完成的音視頻源文件進行分析,因此媒資信息是異步生成的。可通過設置音視頻分析完成的事件通知,當接收到音視頻分析完成的事件通知后,再調用本接口獲取音視頻信息。
示例
調用GetVideoInfo接口示例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.GetVideoInfoRequest getVideoInfoRequest = new com.aliyun.vod20170321.models.GetVideoInfoRequest();
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 復制代碼運行請自行打印 API 的返回值
client.getVideoInfoWithOptions(getVideoInfoRequest, 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);
}
}
}
獲取音視頻信息列表
接口說明
調用GetVideoList接口,最多可獲取指定篩選條件(如視頻狀態、分類 ID 等)的前5000條音視頻。建議限定 StartTime 和 EndTime 來分批獲取數據。若需要查詢更多音視頻,甚至遍歷所有音視頻信息,請參見媒資搜索。
示例
調用GetVideoList接口示例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.GetVideoListRequest getVideoListRequest = new com.aliyun.vod20170321.models.GetVideoListRequest();
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 復制代碼運行請自行打印 API 的返回值
client.getVideoListWithOptions(getVideoListRequest, 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);
}
}
}
常見問題
如何刪除某個清晰度的流?
重轉碼后如何刪除舊的流?
為了新舊輸出流的播放能平滑切換,重轉碼后會保留舊的流文件。為了保證每次播放的是最新轉碼輸出的流,播放接口默認每種清晰度和格式只返回一路最新轉碼完成的流。調用獲取音視頻播放地址接口時,可以設置
ResultType
為Multiple來獲取該音視頻下的所有轉碼完成的流,根據創建時間可以獲取到舊的流ID并刪除。如何刪除加密流?
為了保障流信息的安全性,播放接口默認只返回非加密流。調用獲取音視頻播放地址接口時,可以設置
ResultType
為Multiple來獲取該音視頻下的所有轉碼完成的流,根據基本數據類型結構體中的Encrypt
標識,獲取加密流ID并刪除。