本文檔面向希望通過 AI 智能體(Agent)接入阿里雲ApsaraVideo for VOD(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 前,開發人員需完成以下配置:
開通ApsaraVideo for VOD服務 — ApsaraVideo for VOD控制台。
建立 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 拉取上傳。 | |
媒資管理 | 管理已上傳的音視頻、圖片和輔助媒資。支援查詢媒資資訊、更新中繼資料(標題、描述、分類、標籤)、刪除媒資、設定媒資狀態等操作。 | |
ApsaraVideo for Media Processing | 對音視頻進行轉碼、截圖、動圖產生、浮水印合成等處理。支援自訂轉碼模板組、工作流程編排和 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
否
—
分類別識別碼。在控制台選擇查看。
—
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:ApsaraVideo for Media Processing
ApsaraVideo for Media Processing模組提供音視頻的轉碼、截圖、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(Global Acceleration)。—
媒資管理
媒資管理模組用於管理已上傳的音視頻和輔助媒資。核心操作包括:
查詢媒資資訊:
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] 操作前檢查媒資狀態(通過事件通知確認狀態變更) |