全部产品
Search
文档中心

视频点播:面向智能体的入门指南

更新时间:Aug 20, 2026

本文档面向希望通过 AI 智能体(Agent)接入阿里云视频点播(VOD)服务的开发者,提供 LLM 可消费的 API 文档结构和快速入门指导。

Agent 使用本文档指引

本文档为 AI 智能体设计,推荐按以下策略消费:

  1. 首先加载“约束与指令级别”章节:其中的 MUST/NEVER 规则是代码生成的硬约束,违反将导致运行时错误或安全问题。

  2. 按需展开模块详情:通过“VOD 模块概览”表定位目标模块的 llms 子文档 URL,按需加载详细参数和示例。

  3. 代码生成前逐条自检:对照 MUST/NEVER 约束清单验证生成的代码,确保无违规。

  4. 错误处理参考“常见错误及排查”:遇到 API 返回错误码时,查表获取修复指引。

功能概览

通过本文档,AI 智能体可以:

  • 理解 VOD 核心能力:通过结构化的模块概览,快速了解 VOD 支持的功能(上传、转码、播放、媒资管理等)。

  • 获取 API 调用知识:每个模块的 llms 文件包含该模块的 API 操作列表、参数说明和使用示例,LLM 可直接从中学习如何调用 API。

  • 掌握认证与鉴权:了解 VOD API 支持的认证方式(AccessKey 和 STS 临时凭证),正确配置调用凭证。

  • 处理常见错误:获取常见错误码及排查方法,使 AI 智能体具备自主排障能力。

约束与指令级别(机器可读)

以下约束列表为本文档所有规则的结构化汇总。Agent 在生成代码前 MUST 逐条自检。

MUST(必须遵守,违反将导致错误或安全问题)

#

约束

原因

M1

使用 RAM 子账号 AccessKey,不得使用主账号 AccessKey

主账号 AK 泄露将导致全部云资源被控制

M2

AccessKey 从环境变量读取,不得硬编码在代码中

防止凭证泄露到版本控制系统

M3

FileName 参数必须包含文件扩展名(如 .mp4)

无扩展名将导致上传失败

M4

UploadMediaByURL 的 URL 参数必须经过 URL 编码

未编码的中文/特殊字符导致 InvalidParameter

M5

所有 API 请求必须签名(HMAC-SHA1)

未签名请求被拒绝(SDK 自动处理)

M6

使用事件通知(HTTP 回调/MNS)感知异步任务状态,不得轮询

轮询触发 Throttling,浪费 QPS 配额

M7

GetPlayInfo 前必须确认视频 Status=Normal

转码未完成时调用返回空结果

M8

RAM 用户必须授予 AliyunVODFullAccess 或对应精细权限

否则触发 Forbidden.AccessDenied

M9

遇到 Throttling 错误必须实现指数退避重试

无退避将持续被限流

PREFER(推荐遵守,提升可靠性和安全性)

#

约束

原因

P1

使用 HTTPS 协议调用 API

保证传输安全

P2

使用阿里云官方 SDK 而非裸 HTTP 请求

SDK 自动处理签名、重试、序列化

P3

为 STS 临时凭证设置合理过期时间(建议 900~3600 秒)

过长增加泄露风险,过短频繁刷新

P4

上传时指定 TemplateGroupId 实现自动转码

避免手动触发转码的额外 API 调用

P5

使用 WorkflowId 编排复杂处理流程

减少多步 API 调用的编排复杂度

NEVER(禁止,将导致严重问题)

#

约束

原因

N1

不得将 AccessKey Secret 写入前端代码或日志

前端代码可被反编译,Secret 泄露不可逆

N2

不得轮询视频状态(如循环调用 GetVideoInfo 等待转码)

触发限流,且事件通知更高效

N3

UploadMediaByURL 不得传入内网/私有网络 URL

VOD 服务端无法访问内网地址

N4

不得在同一请求中同时使用 WorkflowId 和 TemplateGroupId 并期望两者都生效

仅 WorkflowId 生效

前置步骤

在 Agent 可以调用 API 前,开发者需完成以下配置:

  1. 开通视频点播服务 — 视频点播控制台。

  2. 创建 RAM 子账号 — 在RAM控制台创建用户,授予 AliyunVODFullAccess 权限,创建 AccessKey

  3. 设置环境变量:

    export ALIBABA_CLOUD_ACCESS_KEY_ID=your-access-key-id
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your-access-key-secret
    export ALIBABA_CLOUD_REGION_ID=cn-shanghai
  4. 安装 SDK(选择语言):

    # Python
    pip install alibabacloud_vod20170321
    # Node.js
    #npm install @alicloud/vod20170321
    # Java (Maven)
    # <artifactId>alibabacloud-vod20170321</artifactId>

核心ID体系

ID 类型

用途

获取时机

VideoId

管理视频(查询、更新、删除)

CreateUploadVideo / UploadMediaByURL 返回

MediaId

管理辅助媒资(水印、字幕)

CreateUploadAttachedMedia 返回

PlayURL

播放视频

GetPlayInfo 返回(转码完成后)

UploadAddress + UploadAuth

客户端/服务端上传凭证

CreateUploadVideo 返回,有效期 3000 秒

TemplateGroupId

指定转码模板组

控制台创建后获取

RequestId

追溯 API 调用(排障唯一标识)

每次 API 响应都包含

关键区分: VideoId 是管理标识(用于服务端 API),PlayURL 是播放地址(用于客户端播放器)。二者不可混用。

默认参数与约定

Agent 在生成代码时,除非用户明确指定,否则使用以下默认值:

参数

默认值

说明

RegionId

cn-shanghai

华东2,推荐首选区域

AppId

app-1000000

未开通多应用时的默认应用

StorageLocation

不指定

上传到默认存储地址

TemplateGroupId

不指定

使用默认"不转码"模板组;如需转码必须显式指定

上传方式

UploadMediaByURL(有公网 URL)/ CreateUploadVideo(本地文件)

根据文件来源选择

状态感知

HTTP 回调

不轮询,用事件通知

协议

HTTPS

所有 API 调用使用 HTTPS

SDK 版本

最新稳定版(API 版本 2017-03-21)

优先使用新版 OpenAPI SDK

llms.txt简介

llms.txt 是 VOD 团队针对大语言模型(LLM)优化的文档索引文件,托管于阿里云 OSS。它将官方 VOD 文档按场景、API、子文档路径重组,并提取 Common mistakes to avoid 清单作为代码生成的硬性约束,供 Coding Agent 一次性加载、按需展开。

索引文件的访问基础URL:

https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/vod/llms/llms.txt

与官方帮助文档的关系:llms.txt 是索引层,子文档(如 媒体上传/URL拉取上传.md)是对官方帮助文档关键信息的提炼,与官网上的同名文档内容一致,由 VOD 文档团队同步维护。

Agent 加载策略:

  1. [MUST] 首次接入时完整加载 llms.txt(约 250 行),解析 Quick start 场景到文档路径的映射。

  2. [MUST] 提取 Common mistakes to avoid 章节,作为代码生成的硬约束。

  3. [PREFER] 按需加载子文档——仅获取当前任务相关的 1~3 个模块文档,避免一次性加载全部。

URL 构造规则:

索引文件以相对路径引用子文档,Agent 在拉取子文档前需把相对路径拼成绝对 URL:

基础URL: https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/vod/llms/
文档URL = 基础URL + url_encode(相对路径)
示例: 基础URL + %E5%AA%92%E4%BD%93%E4%B8%8A%E4%BC%A0/URL%E6%8B%89%E5%8F%96%E4%B8%8A%E4%BC%A0.md

VOD 模块概览

VOD 功能按模块组织,每个模块对应一组相关的 API 操作,可在 llms.txt 查看完整文件列表,或从下表获取。下表列出各模块及对应的 llms 文档链接,供 AI 智能体直接读取:

模块

介绍

llms 文档链接

媒体上传

提供多种方式将音视频文件、图片及辅助媒资(水印、字幕、素材)上传至点播存储。支持控制台上传、客户端 SDK 上传、服务端 API 上传和 URL 拉取上传。

媒体上传概述

媒资管理

管理已上传的音视频、图片和辅助媒资。支持查询媒资信息、更新元数据(标题、描述、分类、标签)、删除媒资、设置媒资状态等操作。

媒资管理概述

媒体处理

对音视频进行转码、截图、动图生成、水印合成等处理。支持自定义转码模板组、工作流编排和 AI 模板(智能审核、智能封面)。

媒体处理概述

音视频播放

通过控制台、播放器 SDK 或第三方播放器,对已上传并处理完成的音视频内容进行播放。

播放音视频

媒体安全

通过访问限制、URL 鉴权、视频加密、数字水印等机制,防止音视频内容被盗链、非法下载和传播的安全保护体系。

媒体安全概述

媒体审核

提供智能审核和人工审核能力。智能审核可自动识别音视频中的违规内容(涉黄、涉暴、涉政等),支持自定义 AI 审核模板。人工审核提供审核任务创建和审核结果提交接口。

智能审核

视频 AI

对音视频内容进行智能审核、标签识别、DNA 比对、封面生成等自动化分析与处理。

视频 AI 概述

云剪辑

提供云剪辑能力,支持通过 API 创建剪辑工程、管理素材、合成视频。

媒体生产(云剪辑)

CDN 分发加速

配置加速域名、获取播放地址和播放凭证,实现音视频的分发与播放。支持 CDN 加速、URL 鉴权、DRM 加密等安全播放能力。

CDN 分发加速

事件通知

媒资上传、转码、审核等处理完成后,通过 HTTP 回调或轻量消息队列(MNS)向用户主动推送处理结果。

事件通知

数据统计

查询用量、监控资源使用情况、统计分析等,帮助了解服务使用量和资源消耗。

数据监控

多应用体系

同一阿里云账号下创建多个应用,实现音视频等媒资、配置及权限的逻辑隔离,支持媒体上传、播放、媒资管理和消息回调的分应用管控。

多应用体系

服务端 SDK

面向 Java、Python、PHP、C/C++ 等语言提供的开发工具包,用于调用 API 实现媒资上传、管理及处理等功能。

服务端 SDK

直播转点播

将直播流实时录制并自动存储为点播媒资,便于后续回看、管理与分发。

配置直播转点播

计费

基于存储容量、流量带宽、转码时长、媒体管理及增值服务等维度按量计费或包年包月。

计费概述

微短剧解决方案

基于点播服务,提供内容生产、媒资管理、数据洞察、高效分发及播放的一站式短剧内容生产与运营方案。

微短剧解决方案

播放器 SDK

阿里云自研的全端音视频播放工具,支持 Web、Android、iOS 等多平台,提供稳定流畅的点播与直播播放能力。

播放器 SDK 概述

AliPlayerKit

面向视频业务的低代码播放器 UI 架构,提供可扩展的组件与场景化解决方案,支持点播、直播等多场景快速接入。

PlayerKits 概述

API 参考

媒资全生命周期的 OpenAPI,支持上传、管理、处理、分发与播放等操作。

API 概览

三大核心链路

链路 1:媒体上传

媒体上传是使用 VOD 的第一步。VOD 提供多种上传方式:

  • 方式一:服务端上传(适合本地文件),通过调用 CreateUploadVideo 接口获取上传地址和凭证,然后使用 SDK 或 HTTP 方式上传。适用于后端服务器上传场景。

    from alibabacloud_vod20170321.models import CreateUploadVideoRequest
    
    request = CreateUploadVideoRequest(
        file_name="video.mp4",       # 必须带扩展名
        title="Demo Video",          # 必填,≤128字符
        template_group_id='xxx'      # 可选:指定转码模板组
    )
    response = client.create_upload_video(request)
    # 返回 VideoId + UploadAddress + UploadAuth
    # 使用 OSS SDK 上传到 UploadAddress

    核心参数:调用 CreateUploadVideo 时,以下参数最为关键。

    参数

    类型

    必填

    默认值

    说明

    约束级别

    FileName

    String

    是

    —

    待上传的音视频源文件地址。[MUST] 必须带扩展名(如 video_01.mp4),无扩展名导致上传失败。

    MUST

    Title

    String

    是

    —

    音视频标题。[MUST] 长度不超过 128 个字符。

    MUST

    Description

    String

    否

    —

    音视频描述,长度不超过 1024 个字符。

    —

    CateId

    Long

    否

    —

    分类 ID。在控制台选择配置管理 > 媒资管理配置 > 分类管理查看。

    —

    Tags

    String

    否

    —

    标签,最多 16 个,使用半角逗号分隔,单个标签不超过 32 字符。

    —

    TemplateGroupId

    String

    否

    —

    转码模板组 ID。[PREFER] 传入后上传完成自动触发转码,无需额外 API 调用。

    PREFER

    WorkflowId

    String

    否

    —

    工作流 ID。传入后上传完成自动触发工作流。[NEVER] 不要同时依赖 WorkflowId 和 TemplateGroupId——同时传入时仅 WorkflowId 生效。

    —

    StorageLocation

    String

    否

    —

    存储地址。不传则上传到默认存储地址。在控制台选择配置管理 > 媒资管理配置 > 存储管理查看。

    —

    CoverURL

    String

    否

    —

    自定义视频封面的 URL。

    —

    AppId

    String

    否

    app-1000000

    应用 ID。多应用体系下指定应用。

    —

  • 方式二:URL 拉取上传(适合有公网 URL 的场景),调用 UploadMediaByURL 接口,传入源文件 URL,VOD 服务端自动拉取并上传。适用于批量迁移或从第三方 URL 导入媒体。[MUST] URL 必须经过 URL 编码。[MUST] 仅支持华东 2(上海)地域。单次最多 20 个 URL。

    from alibabacloud_vod20170321.client import Client
    from alibabacloud_vod20170321.models import UploadMediaByURLRequest
    from alibabacloud_tea_openapi.models import Config
    import urllib.parse, os
    
    config = Config(
        access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
        access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
        region_id=os.environ.get('ALIBABA_CLOUD_REGION_ID', 'cn-shanghai')
    )
    client = Client(config)
    
    # URL 必须编码!
    source_url = "https://example.com/video.mp4"
    encoded_url = urllib.parse.quote(source_url, safe='')
    
    request = UploadMediaByURLRequest(
        upload_urls=encoded_url,
        upload_metadatas=f'[{{"SourceURL":"{encoded_url}","Title":"Demo Video"}}]',
        template_group_id='your_template_group_id'  # 可选:指定后自动转码
    )
    response = client.upload_media_by_url(request)
    print(f"VideoId: {response.body.upload_jobs[0].video_id}")
  • 方式三:客户端上传(适合大文件):通过 AccessKey 或 STS 临时凭证,在前端直接上传视频。

链路2:媒体处理

媒体处理模块提供音视频的转码、截图、AI 审核等处理能力。

  • 转码:通过转码模板组(AddTranscodeTemplateGroup)配置转码参数,上传视频时指定 TemplateGroupId 或使用工作流触发自动转码。支持设置视频编码格式(H.264)、分辨率(如 640×360)、码率(如 400 kbps)等参数。

    触发条件

    机制

    上传时指定 TemplateGroupId

    上传完成后自动按模板组转码

    上传时指定 WorkflowId

    上传完成后触发工作流(优先级高于 TemplateGroupId)

    均未指定

    使用默认模板组(默认为"不转码")

    事件通知(状态感知):

    事件类型

    含义

    Agent 应做的事

    FileUploadComplete

    文件上传完成

    记录日志

    StreamTranscodeComplete

    单清晰度转码完成

    最早可播放时机

    TranscodeComplete

    全部清晰度转码完成

    调用 GetPlayInfo

  • 截图:通过截图模板(AddVodTemplate,TemplateType 为 Snapshot)配置截图参数,支持普通截图、雪碧图等多种类型。

  • 智能审核:通过 AI 模板(AddAITemplate,TemplateType 为 AIMediaAudit)配置审核项(涉黄、涉暴、涉政等)和审核范围(封面、视频画面、标题文本),上传视频后自动触发审核。也支持调用 CreateAudit 进行人工审核。

    调用 AddAITemplate 创建 AI 审核模板时,核心参数如下:

    参数

    类型

    必填

    默认值

    说明

    约束级别

    TemplateName

    String

    是

    —

    AI 模板名称,最大 128 字节。

    MUST

    TemplateType

    String

    是

    —

    [MUST] 模板类型:AIMediaAudit(智能审核)、AIImage(智能封面)。值区分大小写。

    MUST

    TemplateConfig

    String

    是

    —

    [MUST] 模板配置(JSON 字符串)。包含 AuditItem(审核项:terrorism、porn 等)、AuditRange(审核范围:image-cover、text-title、video)、AuditAutoBlock(是否自动屏蔽:yes/no)。

    MUST

  • 智能封面:通过 AI 模板(TemplateType 为 AIImage)自动生成视频封面图。

链路3:分发播放

分发播放模块提供视频的播放地址获取和安全播放能力。

  • 获取播放地址:GetPlayInfo 获取视频播放 URL,支持指定输出格式(MP4、FLV、HLS 等)和清晰度。[MUST] 仅在视频 Status=Normal(转码完成)后调用,否则返回空结果。

    from alibabacloud_vod20170321.models import GetPlayInfoRequest
    
    request = GetPlayInfoRequest(
        video_id='your_video_id',    # 从上传或回调获得
        formats='mp4,m3u8',          # 可选:指定格式
        auth_timeout=3600            # 播放地址有效期(秒)
    )
    response = client.get_play_info(request)
    for play_info in response.body.play_info_list.play_info:
        print(f"[{play_info.definition}] {play_info.play_url}")
  • 获取播放凭证:GetVideoPlayAuth 获取播放凭证,用于加密播放(HLS 标准加密或阿里云私有加密)。

  • 域名管理:AddVodDomain 添加加速域名,BatchStartVodDomain 启用域名,BatchStopVodDomain 停用域名。

    调用 AddVodDomain 添加加速域名时,核心参数如下:

    参数

    类型

    必填

    默认值

    说明

    约束级别

    DomainName

    String

    是

    —

    加速域名,支持泛域名(如 *.example.com)。[MUST] 域名需已完成 ICP 备案(中国内地加速时)。

    MUST

    Sources

    String

    是

    —

    [MUST] 回源地址列表(JSON 数组)。格式:[{"content":"1.1.X.X","type":"ipaddr","priority":"20","port":80}]。

    MUST

    Scope

    String

    否

    domestic

    加速范围:domestic(中国内地)、overseas(港澳台及海外)、global(全球加速)。

    —

媒资管理

媒资管理模块用于管理已上传的音视频和辅助媒资。核心操作包括:

  • 查询媒资信息:GetVideoInfo(查询单个视频)、GetVideoInfos(批量查询)、SearchMedia(搜索媒资)

  • 更新媒资信息:UpdateVideoInfo(更新视频信息)、UpdateImageInfos(更新图片信息)

  • 删除媒资:DeleteVideo(删除视频)、DeleteAttachedMedia(删除辅助媒资)

  • 批量操作:BatchGetMediaInfos(批量获取媒资信息,最多 20 个)

媒资 ID(VideoId / MediaId / ImageId)是管理媒资的唯一标识。上传视频时 CreateUploadVideo 返回 VideoId;上传辅助媒资时 CreateUploadAttachedMedia 返回 MediaId。[MUST] 保存上传返回的 ID,后续所有操作依赖此标识。

SDK 参考

语言

包名

安装命令

Python

alibabacloud_vod20170321

pip install alibabacloud_vod20170321

Node.js

@alicloud/vod20170321

npm install @alicloud/vod20170321

Java

alibabacloud-vod20170321

Maven/Gradle 依赖

Go

github.com/alibabacloud-go/vod-20170321

go get

PHP

alibabacloud/vod-20170321

composer require

C#

AlibabaCloud.SDK.Vod20170321

NuGet

所有 SDK 使用统一的 OpenAPI SDK 架构,产品代码 vod,API 版本 2017-03-21。

端到端验证 Checklist

Agent 生成代码后,应引导开发者按以下顺序验证:

#

验证项

预期结果

1

环境变量已设置

echo $ALIBABA_CLOUD_ACCESS_KEY_ID 有输出

2

SDK 已安装

pip show alibabacloud_vod20170321 成功

3

上传 API 调用成功

返回 VideoId + RequestId

4

事件回调收到 FileUploadComplete

回调服务日志可见

5

事件回调收到 TranscodeComplete

Status=success

6

GetPlayInfo 返回播放地址

PlayURL 列表非空

7

播放地址可访问

curl 返回 200

常见错误及排查

以下为 VOD API 常见错误码。Agent 生成代码时 MUST 实现对应的错误处理逻辑。

错误码

描述

排查方法

预防指令

InvalidAccessKeyId.NotFound

指定的 AccessKey ID 不存在

使用 aliyun configure 验证 AK 配置,或在 RAM 控制台检查 AccessKey 状态。

[MUST] 从环境变量读取 AK,代码中不硬编码

SignatureDoesNotMatch

签名与计算结果不匹配

开启 SDK DEBUG 日志排查签名问题:export ALIBABA_CLOUD_LOG_LEVEL=debug。

[PREFER] 使用官方 SDK 自动签名

InvalidParameter

参数不合法

检查请求参数是否符合要求(类型、长度、必填等),参考各 API 的文档说明。

[MUST] 校验 FileName 含扩展名、URL 已编码

Forbidden.AccessDenied

权限不足

确认 RAM 用户已被授予 VOD 相关权限(如 AliyunVODFullAccess),可通过 aliyun ram ListPoliciesForUser --UserName <user> 检查已授权策略。

[MUST] 创建 RAM 用户时授予足够权限

ServiceUnavailable

服务暂时不可用

VOD 服务临时异常,建议实现指数退避重试后重试。

[MUST] 实现指数退避重试(建议 3 次,间隔 1s/2s/4s)

QuotaExceeded.UploadVideo

上传视频数量超过配额

检查账号的上传配额限制,可提交工单申请提升配额。

[PREFER] 批量上传前查询剩余配额

MediaNotFound

媒资不存在

确认 VideoId/MediaId 正确,确认媒资未被删除。

[MUST] 保存并校验上传返回的媒资 ID

InvalidStatus.Media

媒资状态不合法

媒资可能处于审核中、转码中等状态,调用 GetVideoInfo 查看当前状态后重试。

[MUST] 操作前检查媒资状态(通过事件通知确认状态变更)