← 返回 API 列表 ← 项目门户

获取视频素材

关键信息详情
文档 ID1696710601820172
标签 ID8
原始文档[https://open.oceanengine.com/labels/8/docs/1696710601820172](https://open.oceanengine.com/labels/8/docs/1696710601820172)
接口标识ad.file_video.get
为保证接口使用的安全性,避免调取他人的图片信息,该接口针对素材URL的字段仅查询自己主体下的素材才会返回,即需查询的投放账户的主体需与APPID对应开发者的主体保持一致,才可获取到素材的预览URL的信息,否则会提示“素材所属主体与开发者主体不一致无法获取URL”(第三方获取敏感物料信息可在授权时申请投放账户授权敏感物料权限,可参考常见问题【[https://ad.oceanengine.com/athena/faq/index.html?plat_id=7&id=1675539226863629](https://ad.oceanengine.com/athena/faq/index.html?plat_id=7&id=1675539226863629)[敏感物料授权](https://open.oceanengine.com/labels/41/docs/1808720563583179?origin=left_nav)】)!
💡用户可以通过此接口获取经过一定条件过滤后的客户下创意素材库对应的视频及视频信息。为保证接口使用的安全性,避免调取他人的图片信息,该接口针对素材URL的字段仅查询自己主体下的素材才会返回。对素材视频进行过滤的时候, `video_ids`、 `material_ids`、 `signatures`只能选择一个进行过滤。获取视频素材数据量在100w以内时支持全量获取。关键配合接口如【获取Access token】。 通过此接口,用户可以获取经过一定条件过滤后的客户下创意素材库对应的视频及视频信息。 - 为保证接口使用的安全性,避免调取他人的图片信息,该接口针对素材URL的字段仅查询自己主体下的素材才会返回,即需查询的投放账户的主体需与APPID对应开发者的主体保持一致,才可获取到素材的预览URL的信息,否则会提示:“素材所属主体与开发者主体不一致无法获取URL”(第三方获取敏感物料信息可在授权时申请投放账户授权敏感物料权限,可参考常见问题【[https://ad.oceanengine.com/athena/faq/index.html?plat_id=7&id=1675539226863629](https://ad.oceanengine.com/athena/faq/index.html?plat_id=7&id=1675539226863629)[敏感物料授权](https://open.oceanengine.com/labels/41/docs/1808720563583179?origin=left_nav)】)! - 对素材视频进行过滤的时候,`video_ids`(视频ID)、`material_ids`(素材ID)、`signatures`(视频的md5值)只能选择一个进行过滤! - 获取视频素材数据量在100w以内时支持全量获取
GET [https://api.oceanengine.com/open_api/2/file/video/get/](https://api.oceanengine.com/open_api/2/file/video/get/) 🔍 可视化调试 📦 SDK下载

接口说明

用户可以通过此接口获取经过一定条件过滤后的客户下创意素材库对应的视频及视频信息。为保证接口使用的安全性,避免调取他人的图片信息,该接口针对素材URL的字段仅查询自己主体下的素材才会返回。对素材视频进行过滤的时候, video_ids、 material_ids、 signatures只能选择一个进行过滤。获取视频素材数据量在100w以内时支持全量获取。关键配合接口如【获取Access token】。

通过此接口,用户可以获取经过一定条件过滤后的客户下创意素材库对应的视频及视频信息。

请求地址

https://api.oceanengine.com/open_api/2/file/video/get/可视化调试SDK下载MCP调用

请求方法

GET

Header

字段 类型 必填 描述
Access-Token string 必填 授权access_token,可以通过【获取Access token】接口获取

请求参数

字段 类型 必填 描述
advertiser_id number 必填 客户ID
filtering(object,否) — 视频过滤条件 | 字段 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | `width` | number | 否 | 视频宽度 | | `height` | number | 否 | 视频高度 | | `ratio` | float[] | 否 | 视频宽高比,示例: [1.7, 2.5]
输入1.7则搜索满足宽高比介于1.65-1.75之间的视频,即精度上下浮动0.05 | | `video_ids` | string[] | 否 | 视频ids,示例: ["86adb23eaa21229fc04ef932b5089bb8"]
数量限制:<=100
注意:video_ids、material_ids、signatures只能选择一个进行过滤 | | `material_ids` | number[] | 否 | 素材id列表,可以根据material_ids(素材报表使用的id,一个素材唯一对应一个素材id)进行过滤
数量限制:<=100
注意:video_ids、material_ids、signatures只能选择一个进行过滤 | | `signatures` | string[] | 否 | md5值列表,可以根据素材的md5进行过滤
数量限制:<=100
注意:video_ids、material_ids、signatures只能选择一个进行过滤 | | `start_time` | string | 否 | 根据视频上传时间进行过滤的起始时间,与end_time搭配使用,格式:yyyy-mm-dd | | `end_time` | string | 否 | 根据视频上传时间进行过滤的截止时间,与start_time搭配使用,格式:yyyy-mm-dd | | `labels` | string[] | 否 | 视频标签。其中,投放变现方式为仅IAA的素材支持`仅IAA`筛选。 | | `source` | string[] | 否 | 素材来源,详见[【附录-素材来源】](https://ad.oceanengine.com/openapi/doc/index.html?id=1696710760171535)
枚举值大小写敏感,请严格按照定义的名称传参 | | `star_author_ids` | string[] | 否 | 星图达人 id 检索,仅当source = `STAR` 时,支持通过星图达人ID进行筛选,单次最多支持传入20 个id进行检索 |
字段 类型 必填 描述
page number 否 页码,默认值1
page_size number 否 页面大小,默认值20

请求示例

python

# coding=utf-8
import json
import requests

from six import string_types
from six.moves.urllib.parse import urlencode, urlunparse  # noqa

ACCESS_TOKEN = "xxx"
PATH = "/open_api/2/file/video/get/"


def build_url(path, query=""):
    # type: (str, str) -> str
    """
    Build request URL
    :param path: Request path
    :param query: Querystring
    :return: Request URL
    """
    scheme, netloc = "https", "api.oceanengine.com"
    return urlunparse((scheme, netloc, path, "", query, ""))

def get(json_str):
    # type: (str) -> dict
    """
    Send GET request
    :param json_str: Args in JSON format
    :return: Response in JSON format
    """
    args = json.loads(json_str)
    query_string = urlencode({k: v if isinstance(v, string_types) else json.dumps(v) for k, v in args.items()})
    url = build_url(PATH, query_string)
    headers = {
        "Access-Token": ACCESS_TOKEN,
    }
    rsp = requests.get(url, headers=headers)
    return rsp.json()


if __name__ == '__main__':
    advertiser_id = ADVERTISER_ID
    width = WIDTH
    height = HEIGHT
    ratio_list = RATIO
    ratio = json.dumps(ratio_list)
    video_ids_list = VIDEO_IDS
    video_ids = json.dumps(video_ids_list)
    material_ids_list = MATERIAL_IDS
    material_ids = json.dumps(material_ids_list)
    signatures_list = SIGNATURES
    signatures = json.dumps(signatures_list)
    start_time = START_TIME
    end_time = END_TIME
    labels_list = LABELS
    labels = json.dumps(labels_list)
    source_list = SOURCE
    source = json.dumps(source_list)
    star_author_ids_list = STAR_AUTHOR_IDS
    star_author_ids = json.dumps(star_author_ids_list)
    page = PAGE
    page_size = PAGE_SIZE

    # Args in JSON format
    my_args = "{\"advertiser_id\": \"%s\", \"filtering\": {\"width\": \"%s\", \"height\": \"%s\", \"ratio\": %s, \"video_ids\": %s, \"material_ids\": %s, \"signatures\": %s, \"start_time\": \"%s\", \"end_time\": \"%s\", \"labels\": %s, \"source\": %s, \"star_author_ids\": %s}, \"page\": \"%s\", \"page_size\": \"%s\"}" % (advertiser_id, width, height, ratio, video_ids, material_ids, signatures, start_time, end_time, labels, source, star_author_ids, page, page_size)
    print(get(my_args))

java

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.*;
import org.apache.http.client.utils.URIBuilder;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Demo {
    private static final String ACCESS_TOKEN = "xxx";
    private static final String PATH = "/open_api/2/file/video/get/";
    private static final ObjectMapper mapper = new ObjectMapper();

    /**
     * Build request URL
     *
     * @param path Request path
     * @return Request URL
     */
    private static String buildUrl(String path) throws URISyntaxException {
        URI uri = new URI("https", "api.oceanengine.com", path, "", "");
        return uri.toString();
    }


    /**
     * Send GET request
     *
     * @param jsonStr:Args in JSON format
     * @return Response in JSON format
     */
    private static String get(String jsonStr) throws IOException, URISyntaxException {
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        URIBuilder ub = new URIBuilder(buildUrl(PATH));
        Map< String, Object > map = mapper.readValue(jsonStr, Map.class);
        map.forEach((k, v) -> {
            try {
                ub.addParameter(k, v instanceof String ? (String) v : mapper.writeValueAsString(v));
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
        });
        URL url = ub.build().toURL();

        Request request = new Request.Builder()
                .url(url)
                .method("GET", null)
                .addHeader("Access-Token", ACCESS_TOKEN)
                .build();
        Response response = client.newCall(request).execute();
        return response.body().string();
    }


    public static void main(String[] args) throws IOException, URISyntaxException {
        Long advertiser_id = ADVERTISER_ID;
        Long width = WIDTH;
        Long height = HEIGHT;
        List < Double > ratio_list = RATIO;
        String ratio = mapper.writeValueAsString(ratio_list);
        List < String > video_ids_list = VIDEO_IDS;
        String video_ids = mapper.writeValueAsString(video_ids_list);
        List < Long > material_ids_list = MATERIAL_IDS;
        String material_ids = mapper.writeValueAsString(material_ids_list);
        List < String > signatures_list = SIGNATURES;
        String signatures = mapper.writeValueAsString(signatures_list);
        String start_time = START_TIME;
        String end_time = END_TIME;
        List < String > labels_list = LABELS;
        String labels = mapper.writeValueAsString(labels_list);
        List < String > source_list = SOURCE;
        String source = mapper.writeValueAsString(source_list);
        List < String > star_author_ids_list = STAR_AUTHOR_IDS;
        String star_author_ids = mapper.writeValueAsString(star_author_ids_list);
        Long page = PAGE;
        Long page_size = PAGE_SIZE;

        // Args in JSON format
        String myArgs = String.format("{\"advertiser_id\": \"%s\", \"filtering\": {\"width\": \"%s\", \"height\": \"%s\", \"ratio\": %s, \"video_ids\": %s, \"material_ids\": %s, \"signatures\": %s, \"start_time\": \"%s\", \"end_time\": \"%s\", \"labels\": %s, \"source\": %s, \"star_author_ids\": %s}, \"page\": \"%s\", \"page_size\": \"%s\"}",advertiser_id, width, height, ratio, video_ids, material_ids, signatures, start_time, end_time, labels, source, star_author_ids, page, page_size);
        System.out.println(get(myArgs));
    }
}

php


$ACCESS_TOKEN = "xxx";
$PATH = "/open_api/2/file/video/get/";

/**
 * Build request URL
 * @param $path : Request path
 * @return string
 */
function build_url($path)
{
    return "https://api.oceanengine.com" . $path;
}

/**
 * Send GET request
 * @param $json_str : Args in JSON format
 * @return bool|string : Response in JSON format
 */
function get($json_str)
{
    global $ACCESS_TOKEN, $PATH;
    $curl = curl_init();

    $args = json_decode($json_str, true);

    /* Values of querystring is also in JSON format */
    foreach ($args as $key => $value) {
        $args[$key] = is_string($value) ? $value : json_encode($value);
    }

    $url = build_url($PATH) . "?" . http_build_query(
            $args
        );

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => array(
            "Access-Token: " . $ACCESS_TOKEN,
        ),
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}


$advertiser_id = ADVERTISER_ID;
$width = WIDTH;
$height = HEIGHT;
$ratio_list = RATIO;
$ratio = json_encode($ratio_list);
$video_ids_list = VIDEO_IDS;
$video_ids = json_encode($video_ids_list);
$material_ids_list = MATERIAL_IDS;
$material_ids = json_encode($material_ids_list);
$signatures_list = SIGNATURES;
$signatures = json_encode($signatures_list);
$start_time = START_TIME;
$end_time = END_TIME;
$labels_list = LABELS;
$labels = json_encode($labels_list);
$source_list = SOURCE;
$source = json_encode($source_list);
$star_author_ids_list = STAR_AUTHOR_IDS;
$star_author_ids = json_encode($star_author_ids_list);
$page = PAGE;
$page_size = PAGE_SIZE;

/* Args in JSON format */
$my_args = sprintf("{\"advertiser_id\": \"%s\", \"filtering\": {\"width\": \"%s\", \"height\": \"%s\", \"ratio\": %s, \"video_ids\": %s, \"material_ids\": %s, \"signatures\": %s, \"start_time\": \"%s\", \"end_time\": \"%s\", \"labels\": %s, \"source\": %s, \"star_author_ids\": %s}, \"page\": \"%s\", \"page_size\": \"%s\"}", $advertiser_id, $width, $height, $ratio, $video_ids, $material_ids, $signatures, $start_time, $end_time, $labels, $source, $star_author_ids, $page, $page_size);
echo get($my_args);

curl

curl --get -H "Access-Token:xxx" \
--data-urlencode "advertiser_id=ADVERTISER_ID" \
--data-urlencode "filtering={\"width\": \"WIDTH\", \"height\": \"HEIGHT\", \"ratio\": [\"RATIO\"], \"video_ids\": [\"VIDEO_IDS\"], \"material_ids\": [\"MATERIAL_IDS\"], \"signatures\": [\"SIGNATURES\"], \"start_time\": \"START_TIME\", \"end_time\": \"END_TIME\", \"labels\": [\"LABELS\"], \"source\": [\"SOURCE\"], \"star_author_ids\": [\"STAR_AUTHOR_IDS\"]}" \
--data-urlencode "page=PAGE" \
--data-urlencode "page_size=PAGE_SIZE" \
https://api.oceanengine.com/open_api/2/file/video/get/

应答字段

字段 类型 必填 描述
code number 否 返回码,详见 【附录-返回码】
message string 否 返回信息,详见 【附录-返回码】
data(json,否) — json返回值
list(object[],否) — json返回值 | 字段 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | `id` | string | 否 | 视频ID | | `size` | number | 否 | 视频大小 | | `width` | number | 否 | 视频宽度 | | `height` | number | 否 | 视频高度 | | `url` | string | 否 | 视频地址,仅限同主体进行素材预览查看,若非同主体会返回“素材所属主体与开发者主体不一致无法获取URL”
链接仅做预览使用,预览链接有效期为1小时 | | `format` | string | 否 | 视频格式 | | `signature` | string | 否 | 视频md5值 | | `poster_url` | string | 否 | 视频首帧截图,仅限同主体进行素材预览查看,若非同主体会返回“素材所属主体与开发者主体不一致无法获取URL” | | `duration` | double | 否 | 视频时长 | | `material_id` | number | 否 | 素材id | | `bit_rate` | number | 否 | 码率,单位bps | | `source` | string | 否 | 素材来源,详见[【附录-素材来源】](https://ad.oceanengine.com/openapi/doc/index.html?id=1696710760171535)
枚举值大小写敏感,请严格按照定义的名称传参 | | `create_time` | string | 否 | 素材的上传时间,格式:"yyyy-mm-dd HH:MM:SS" | | `filename` | string | 否 | 素材的文件名 | | `labels` | string[] | 否 | 视频标签 | | `organization_tags` | string[] | 否 | | | `star_author_id` | string | 否 | 星图达人ID |
page_info(object,否) — 分页信息 | 字段 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | `page` | number | 否 | 页码 | | `page_size` | number | 否 | 页面大小 | | `total_page` | number | 否 | 页面总数 | | `total_number` | number | 否 | 视频总数 |
字段 类型 必填 描述
request_id string 否 请求日志id

应答示例

HTTPS/1.1 200 OK
{
    "message": "OK",
    "code": 0,
    "data": {}
}

业务错误码

仅披露当前接口高频的参数校验报错,更多常见报错详见「返回码」文档

在接这个接口时卡住了?
Stuck wiring this API into production? We build ad-delivery tooling on these platforms — campaign automation, reporting pipelines, error-handling and migration between API versions.
联系我们 · Talk to us 每日平台更新简报 →