全部產品
Search
文件中心

ApsaraVideo VOD:搜尋媒資資訊

更新時間:Feb 11, 2026

當媒資庫中儲存了海量音視頻、圖片檔案時,快速定位媒資成為一大挑戰。ApsaraVideo for VOD(VOD)的媒資搜尋功能提供強大的多維度搜尋、篩選與排序能力,協助通過控制台或API/SDK從海量資料中高效、精確地檢索所需媒資。

情境一:通過控制台搜尋

以搜尋音/視頻資訊為例:

  1. 登入ApsaraVideo for VOD控制台

  2. 在左側導覽列選擇媒资库 > 音/視頻,進入到音/視頻管理頁面。

  3. 可以使用頁面頂部的篩選和搜尋功能來定位媒資。搜尋媒資資訊1.png

    • 搜尋功能:支援對媒体名称進行模糊搜尋,對媒体ID标签名称進行精確搜尋。

    • 篩選功能:支援對音/視頻存储地址类型分类状态来源儲存類型進行篩選,並可選擇按创建时间正序或倒序排列。

情境二:通過API/SDK搜尋媒資

說明

推薦使用服務端SDK調用API來搜尋媒資資訊,詳情請參見VOD SDK使用說明

通過SearchMedia - 搜尋媒體資訊介面,可以將搜尋能力整合到業務系統中,實現媒資檢索功能的自動化。支援作為過濾條件的媒資資訊包括VideoIdCateIdStorageLocationTitleTags等欄位,詳情請參見媒資搜尋協議。程式碼範例如下:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.SearchMediaRequest;
import com.aliyuncs.vod.model.v20170321.SearchMediaResponse;

public class SearchMediaExample {
    public static void main(String[] args) {
        // 初始化用戶端
        DefaultProfile profile = DefaultProfile.getProfile(
            "cn-shanghai",          // 地區ID
            "YOUR_ACCESS_KEY_ID",   // AccessKey ID
            "YOUR_ACCESS_KEY_SECRET"// AccessKey Secret
        );
        IAcsClient client = new DefaultAcsClient(profile);
        
        // 構建請求
        SearchMediaRequest request = new SearchMediaRequest();
        request.setMatch("Title='VOD' AND Status='Normal'");
        request.setFields("Title,CoverURL,Duration,Size");
        request.setSortBy("CreationTime:Desc");
        request.setPageSize(20);
        request.setPageNo(1);
        
        try {
            SearchMediaResponse response = client.getAcsResponse(request);
            System.out.println("Total Records: " + response.getTotal());
            for (SearchMediaResponse.Media media : response.getMediaList()) {
                System.out.println("VideoId: " + media.getMediaId() + ", Title: " + media.getVideo().getTitle());
            }
        } catch (Exception e) {
            System.err.println("An error occurred: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
from aliyunsdkcore.client import AcsClient
from aliyunsdkvod.request.v20170321 import SearchMediaRequest
import json

# 初始化用戶端
client = AcsClient(
    'YOUR_ACCESS_KEY_ID', 
    'YOUR_ACCESS_KEY_SECRET', 
    'cn-shanghai'
)

# 構建請求
request = SearchMediaRequest.SearchMediaRequest()
request.set_Match("Title='VOD' AND Status='Normal'")
request.set_Fields("Title,CoverURL,Duration,Size")
request.set_SortBy("CreationTime:Desc")
request.set_PageSize(20)
request.set_PageNo(1)

try:
    response_str = client.do_action_with_exception(request)
    response_data = json.loads(response_str)
    print(f"Total Records: {response_data.get('Total')}")
    for media in response_data.get('MediaList', {}).get('Media', []):
        print(f"VideoId: {media.get('MediaId')}, Title: {media.get('Video', {}).get('Title')}")
except Exception as e:
    print(f"An error occurred: {e}")

分頁與資料遍曆

為保證查詢效能,媒資搜尋提供了兩種分頁模式。

  • 標準分頁(適用於UI展示)

    使用翻頁參數PageNoPageSize逐頁擷取分頁資料,最多可擷取搜尋結果的前5000條資料。

  • 滾動遍曆(適用於資料匯出)

    通過翻頁參數PageNoPageSize和遊標ScrollToken實現深度遍曆,能夠分段擷取全量搜尋結果,但每段限制最多1200條資料。程式碼範例如下:

    // 滾動遍曆樣本
    String scrollToken = null;
    // 在一次完整的遍曆過程中,SessionId 必須保持不變
    String sessionId = java.util.UUID.randomUUID().toString(); 
    List<SearchMediaResponse.Media> allMedia = new ArrayList<>();
    
    do {
        SearchMediaRequest request = new SearchMediaRequest();
        request.setPageSize(100); // 每次最多拉取100條
        request.setSessionId(sessionId);
        
        if (scrollToken != null) {
            request.setScrollToken(scrollToken);
        }
        
        SearchMediaResponse response = client.getAcsResponse(request);
        if (response.getMediaList() != null) {
            allMedia.addAll(response.getMediaList());
        }
        
        scrollToken = response.getScrollToken();
        
    // 當返回的 scrollToken 為空白或 null 時,表示所有資料已遍曆完畢
    } while (scrollToken != null && !scrollToken.isEmpty());
    

API使用樣本

下文將以搜尋視頻資訊為例介紹搜尋語句。

重要
  • 發送請求前需要對請求參數做URL編碼。

  • 同時語句中使用的等號、雙引號、單引號、括弧必須為英文半形。

分類

描述

返回欄位

媒資搜尋介面預設返回媒資基本資料,當需要附加其他媒資資訊時需要指定Fields欄位。查詢結果中包含TitleCoverURL

Fields=Title,CoverURL

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&Fields=Title,CoverURL

精確匹配

查詢VideoId值為28ba2b26d540446c94cdd2c4c48090e5的視頻資訊:

VideoId='28ba2b26d540446c94cdd2c4c48090e5'

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&Match=VideoId='28ba2b26d540446c94cdd2c4c48090e5'

模糊比對

Title中包含音樂,可以寫成:

Title='音樂'

或者寫成

Title in ('音樂')

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&Match=Title='音樂'

多值查詢

注意:如果用於查詢的欄位僅支援模糊比對,那麼查詢結果也將基於模糊比對返回。

查詢Status值為NormalChecking

Status in ('Normal','Checking')

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&Match=Status in ('Normal','Checking')

範圍查詢

使用開閉區間表示範圍,CreationTime位於2018-01-01T00:00:00Z2018-02-01T00:00:00Z之間:

CreationTime=('2018-01-01T00:00:00Z','2018-02-01T00:00:00Z')

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&Match=CreationTime=('2018-01-01T00:00:00Z','2018-02-01T00:00:00Z')

如果只有左邊界或右邊界,對應右邊界或左邊界值為空白即可,如CreationTime大於2018-01-01T00:00:00Z

CreationTime=('2018-01-01T00:00:00Z',)

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&Match=CreationTime=('2018-01-01T00:00:00Z',)

排序欄位

按建立時間倒排:

CreationTime:Desc

請求樣本:

http://vod.cn-shanghai.aliyuncs.com?Action=SearchMedia
&SortBy=CreationTime:Desc

相關文檔