本文档面向希望通过 AI 智能体(Agent)接入阿里云视频点播(VOD)服务的开发者,提供 LLM 可消费的 API 文档结构和快速入门指导。
Agent 使用本文档指引
本文档为 AI 智能体设计,推荐按以下策略消费:
首先加载“约束与指令级别”章节:其中的 MUST/NEVER 规则是代码生成的硬约束,违反将导致运行时错误或安全问题。
按需展开模块详情:通过“VOD 模块概览”表定位目标模块的 llms 子文档 URL,按需加载详细参数和示例。
代码生成前逐条自检:对照 MUST/NEVER 约束清单验证生成的代码,确保无违规。
错误处理参考“常见错误及排查”:遇到 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 参数必须包含文件扩展名(如 | 无扩展名将导致上传失败 |
M4 | UploadMediaByURL 的 URL 参数必须经过 URL 编码 | 未编码的中文/特殊字符导致 InvalidParameter |
M5 | 所有 API 请求必须签名(HMAC-SHA1) | 未签名请求被拒绝(SDK 自动处理) |
M6 | 使用事件通知(HTTP 回调/MNS)感知异步任务状态,不得轮询 | 轮询触发 Throttling,浪费 QPS 配额 |
M7 | GetPlayInfo 前必须确认视频 Status=Normal | 转码未完成时调用返回空结果 |
M8 | RAM 用户必须授予 | 否则触发 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 前,开发者需完成以下配置:
开通视频点播服务 — 视频点播控制台。
创建 RAM 子账号 — 在RAM控制台创建用户,授予
AliyunVODFullAccess权限,创建 AccessKey设置环境变量:
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安装 SDK(选择语言):
# Python pip install alibabacloud_vod20170321 # Node.js #npm install @alicloud/vod20170321 # Java (Maven) # <artifactId>alibabacloud-vod20170321</artifactId>
核心ID体系
ID 类型 | 用途 | 获取时机 |
VideoId | 管理视频(查询、更新、删除) |
|
MediaId | 管理辅助媒资(水印、字幕) |
|
PlayURL | 播放视频 |
|
UploadAddress + UploadAuth | 客户端/服务端上传凭证 |
|
TemplateGroupId | 指定转码模板组 | 控制台创建后获取 |
RequestId | 追溯 API 调用(排障唯一标识) | 每次 API 响应都包含 |
关键区分: VideoId 是管理标识(用于服务端 API),PlayURL 是播放地址(用于客户端播放器)。二者不可混用。
默认参数与约定
Agent 在生成代码时,除非用户明确指定,否则使用以下默认值:
参数 | 默认值 | 说明 |
RegionId |
| 华东2,推荐首选区域 |
AppId |
| 未开通多应用时的默认应用 |
StorageLocation | 不指定 | 上传到默认存储地址 |
TemplateGroupId | 不指定 | 使用默认"不转码"模板组;如需转码必须显式指定 |
上传方式 |
| 根据文件来源选择 |
状态感知 | HTTP 回调 | 不轮询,用事件通知 |
协议 | HTTPS | 所有 API 调用使用 HTTPS |
SDK 版本 | 最新稳定版(API 版本 | 优先使用新版 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 加载策略:
[MUST] 首次接入时完整加载
llms.txt(约 250 行),解析 Quick start 场景到文档路径的映射。[MUST] 提取
Common mistakes to avoid章节,作为代码生成的硬约束。[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.mdVOD 模块概览
VOD 功能按模块组织,每个模块对应一组相关的 API 操作,可在 llms.txt 查看完整文件列表,或从下表获取。下表列出各模块及对应的 llms 文档链接,供 AI 智能体直接读取:
模块 | 介绍 | llms 文档链接 |
媒体上传 | 提供多种方式将音视频文件、图片及辅助媒资(水印、字幕、素材)上传至点播存储。支持控制台上传、客户端 SDK 上传、服务端 API 上传和 URL 拉取上传。 | |
媒资管理 | 管理已上传的音视频、图片和辅助媒资。支持查询媒资信息、更新元数据(标题、描述、分类、标签)、删除媒资、设置媒资状态等操作。 | |
媒体处理 | 对音视频进行转码、截图、动图生成、水印合成等处理。支持自定义转码模板组、工作流编排和 AI 模板(智能审核、智能封面)。 | |
音视频播放 | 通过控制台、播放器 SDK 或第三方播放器,对已上传并处理完成的音视频内容进行播放。 | |
媒体安全 | 通过访问限制、URL 鉴权、视频加密、数字水印等机制,防止音视频内容被盗链、非法下载和传播的安全保护体系。 | |
媒体审核 | 提供智能审核和人工审核能力。智能审核可自动识别音视频中的违规内容(涉黄、涉暴、涉政等),支持自定义 AI 审核模板。人工审核提供审核任务创建和审核结果提交接口。 | |
视频 AI | 对音视频内容进行智能审核、标签识别、DNA 比对、封面生成等自动化分析与处理。 | |
云剪辑 | 提供云剪辑能力,支持通过 API 创建剪辑工程、管理素材、合成视频。 | |
CDN 分发加速 | 配置加速域名、获取播放地址和播放凭证,实现音视频的分发与播放。支持 CDN 加速、URL 鉴权、DRM 加密等安全播放能力。 | |
事件通知 | 媒资上传、转码、审核等处理完成后,通过 HTTP 回调或轻量消息队列(MNS)向用户主动推送处理结果。 | |
数据统计 | 查询用量、监控资源使用情况、统计分析等,帮助了解服务使用量和资源消耗。 | |
多应用体系 | 同一阿里云账号下创建多个应用,实现音视频等媒资、配置及权限的逻辑隔离,支持媒体上传、播放、媒资管理和消息回调的分应用管控。 | |
服务端 SDK | 面向 Java、Python、PHP、C/C++ 等语言提供的开发工具包,用于调用 API 实现媒资上传、管理及处理等功能。 | |
直播转点播 | 将直播流实时录制并自动存储为点播媒资,便于后续回看、管理与分发。 | |
计费 | 基于存储容量、流量带宽、转码时长、媒体管理及增值服务等维度按量计费或包年包月。 | |
微短剧解决方案 | 基于点播服务,提供内容生产、媒资管理、数据洞察、高效分发及播放的一站式短剧内容生产与运营方案。 | |
播放器 SDK | 阿里云自研的全端音视频播放工具,支持 Web、Android、iOS 等多平台,提供稳定流畅的点播与直播播放能力。 | |
AliPlayerKit | 面向视频业务的低代码播放器 UI 架构,提供可扩展的组件与场景化解决方案,支持点播、直播等多场景快速接入。 | |
API 参考 | 媒资全生命周期的 OpenAPI,支持上传、管理、处理、分发与播放等操作。 |
三大核心链路
链路 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 |
|
Node.js | @alicloud/vod20170321 |
|
Java | alibabacloud-vod20170321 | Maven/Gradle 依赖 |
Go | github.com/alibabacloud-go/vod-20170321 |
|
PHP | alibabacloud/vod-20170321 |
|
C# | AlibabaCloud.SDK.Vod20170321 | NuGet |
所有 SDK 使用统一的 OpenAPI SDK 架构,产品代码 vod,API 版本 2017-03-21。
端到端验证 Checklist
Agent 生成代码后,应引导开发者按以下顺序验证:
# | 验证项 | 预期结果 |
1 | 环境变量已设置 |
|
2 | SDK 已安装 |
|
3 | 上传 API 调用成功 | 返回 VideoId + RequestId |
4 | 事件回调收到 | 回调服务日志可见 |
5 | 事件回调收到 | Status=success |
6 | GetPlayInfo 返回播放地址 | PlayURL 列表非空 |
7 | 播放地址可访问 | curl 返回 200 |
常见错误及排查
以下为 VOD API 常见错误码。Agent 生成代码时 MUST 实现对应的错误处理逻辑。
错误码 | 描述 | 排查方法 | 预防指令 |
InvalidAccessKeyId.NotFound | 指定的 AccessKey ID 不存在 | 使用 | [MUST] 从环境变量读取 AK,代码中不硬编码 |
SignatureDoesNotMatch | 签名与计算结果不匹配 | 开启 SDK DEBUG 日志排查签名问题: | [PREFER] 使用官方 SDK 自动签名 |
InvalidParameter | 参数不合法 | 检查请求参数是否符合要求(类型、长度、必填等),参考各 API 的文档说明。 | [MUST] 校验 FileName 含扩展名、URL 已编码 |
Forbidden.AccessDenied | 权限不足 | 确认 RAM 用户已被授予 VOD 相关权限(如 | [MUST] 创建 RAM 用户时授予足够权限 |
ServiceUnavailable | 服务暂时不可用 | VOD 服务临时异常,建议实现指数退避重试后重试。 | [MUST] 实现指数退避重试(建议 3 次,间隔 1s/2s/4s) |
QuotaExceeded.UploadVideo | 上传视频数量超过配额 | 检查账号的上传配额限制,可提交工单申请提升配额。 | [PREFER] 批量上传前查询剩余配额 |
MediaNotFound | 媒资不存在 | 确认 VideoId/MediaId 正确,确认媒资未被删除。 | [MUST] 保存并校验上传返回的媒资 ID |
InvalidStatus.Media | 媒资状态不合法 | 媒资可能处于审核中、转码中等状态,调用 | [MUST] 操作前检查媒资状态(通过事件通知确认状态变更) |