全部產品
Search
文件中心

ApsaraVideo VOD:面向智能體的入門指南

更新時間:Aug 21, 2026

本文檔面向希望通過 AI 智能體(Agent)接入阿里雲ApsaraVideo for VOD(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. 開通ApsaraVideo for VOD服務 — ApsaraVideo for VOD控制台

  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 拉取上傳。

媒體上傳概述

媒資管理

管理已上傳的音視頻、圖片和輔助媒資。支援查詢媒資資訊、更新中繼資料(標題、描述、分類、標籤)、刪除媒資、設定媒資狀態等操作。

媒資管理概述

ApsaraVideo for Media Processing

對音視頻進行轉碼、截圖、動圖產生、浮水印合成等處理。支援自訂轉碼模板組、工作流程編排和 AI 模板(智能審核、智能封面)。

ApsaraVideo for Media Processing概述

音視頻播放

通過控制台、播放器 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

    分類別識別碼。在控制台選擇組態管理 > 媒資管理配置 > 分類管理查看。

    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(審核項:terrorismporn 等)、AuditRange(審核範圍:image-covertext-titlevideo)、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

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] 操作前檢查媒資狀態(通過事件通知確認狀態變更)