微短剧媒体管理

微短剧解决方案提供通过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&amp;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&amp;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&amp;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);
        }        
    }
}

常见问题

  1. 如何删除某个清晰度的流?

    调用获取音视频播放地址接口获取要删除的流ID(即JobId),再调用删除媒体流接口进行删除。

  2. 重转码后如何删除旧的流?

    为了新旧输出流的播放能平滑切换,重转码后会保留旧的流文件。为了保证每次播放的是最新转码输出的流,播放接口默认每种清晰度和格式只返回一路最新转码完成的流。调用获取音视频播放地址接口时,可以设置ResultTypeMultiple来获取该音视频下的所有转码完成的流,根据创建时间可以获取到旧的流ID并删除。

  3. 如何删除加密流?

    为了保障流信息的安全性,播放接口默认只返回非加密流。调用获取音视频播放地址接口时,可以设置ResultTypeMultiple来获取该音视频下的所有转码完成的流,根据基本数据类型结构体中的Encrypt标识,获取加密流ID并删除。