微短剧解决方案提供通过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 方式,更多鉴权访问方式请参见:https://help.aliyun.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 方式,更多鉴权访问方式请参见:https://help.aliyun.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 方式,更多鉴权访问方式请参见:https://help.aliyun.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并删除。