全部产品
Search
文档中心

视频点播:搜索媒资信息

更新时间:Feb 10, 2026

当媒资库中存储了海量音视频、图片文件时,快速定位媒资成为一大挑战。视频点播(VOD)的媒资搜索功能提供强大的多维度搜索、筛选与排序能力,帮助通过控制台或API/SDK从海量数据中高效、精确地检索所需媒资。

场景一:通过控制台搜索

以搜索音/视频信息为例:

  1. 登录视频点播控制台

  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

相关文档