全部產品
Search
文件中心

ApsaraVideo Media Processing:視頻截圖

更新時間:Mar 17, 2026

視頻截圖是指對視頻截取指定時間、指定尺寸的圖片,用於生產視頻封面、雪碧圖、播放器進度條縮圖等情境。本文為您介紹ApsaraVideo for Media Processing中提交視頻截圖的操作步驟。

功能概述

應用情境

  • 視頻封面:選取首幀作為feed流短視頻的封面圖,或截取視頻指定時間點的畫面作為封面。

  • 視頻預覽:製作視頻內容縮圖。當使用者在播放器的時間軸上懸停時,可以顯示視頻特定時間點的靜態縮圖,協助使用者快速探索視頻內容,並跳轉到他們感興趣的部分。

  • 視頻審核:對視頻內容進行截圖採樣,供人工或機器審核。

功能特性

功能

說明

API相關參數

控制台操作

靜態截圖

對視頻截取指定時間、指定尺寸的JPG圖片。提供以下幾種採樣方式:

  • 單張截圖:在指定時間點截取一張圖片。支援同步或非同步呼叫。

  • 採樣截圖:指定截圖數量和間隔,從指定時間點開始,每隔指定時間長度(秒)就截取一張截圖,截夠指定數量或截到視頻結尾停止。僅支援非同步呼叫。

  • 平均截圖:指定截圖數量,從指定時間點開始,按相同的時間間隔進行截圖,截到視頻結尾停止。僅支援非同步呼叫。

  • 時間點截圖:指定一組時間點,按這些時間點進行截圖。僅支援非同步呼叫。

SnapshotConfig

支援

雪碧截圖

設定後,對截取的一系列靜態圖片,會按照指定的排列規則拼成一張大圖,這張大圖即為雪碧圖。格式為JPG。僅支援非同步呼叫。通過一次請求雪碧圖可擷取多張圖片的資訊,實現大幅降低圖片請求數量,提高用戶端效能。

TileOut、TileOutputFile

不支援

WebVTT截圖

設定後,對截取的一系列靜態圖片或雪碧圖,會產生VTT檔案,檔案包含截圖時間、截圖檔案地址、雪碧圖座標資訊。在使用圖片時需要先擷取VTT檔案,解析圖片的資訊進行展示。可用於播放器進度條縮圖展示。

SubOut

支援

主要畫面格截圖

設定後,只截取主要畫面格。如對應指定時間點為非主要畫面格,則就近選取主要畫面格。

FrameType

支援

首幀黑屏檢測

對於首幀圖片(time=0)可以使用黑屏檢測。通過設定黑色像素的畫面比例和顏色值定義黑屏。截圖時會檢測視頻的前5秒,如果有非黑屏圖片,則截取非黑屏圖片;否則,單圖任務返回失敗,多圖任務截取第一幀黑屏圖片。

BlackLevel、PixelBlackThreshold

支援

計費說明

按截圖張數收取功能介面請求費用。詳細計費說明,請參見功能介面請求定價

控制台提交截圖任務

說明

控制台僅支援通過工作流程提交截圖任務。

  1. 登入ApsaraVideo for Media Processing控制台

  2. 在頂部功能表列左側選擇地區。地區

  3. 在左側導覽列,選擇工作流程 > 工作流程編排

  4. 單擊建立工作流程

  5. 按需配置輸入節點。

  6. 添加截圖節點。image.png

  7. 單擊截圖節點右側的筆形表徵圖,配置截圖參數。

    參數

    是否必選

    說明

    截圖方式

    必選

    • 單張截圖:設定一個明確的截圖時間點,截取對應的視頻映像。

    • 多張截圖:按照設定的間隔時間,均勻的截取對應視頻的多幀映像,每幀映像都是一個圖片檔案。也叫批量截圖、序列截圖。

    • 平均截圖:按照設定的截圖張數,均勻地對視頻進行切分並截取指定數量的映像。

    截圖間隔時間(秒)

    多張截圖時必選

    在文字框中輸入截圖間隔時間,單位為秒。

    截圖數量

    平均截圖時必選

    在文字框中輸入截圖數量。

    說明
    • 不設定截圖數量時,表示按照間隔時間,一直截取到視頻結尾。

    • 截圖數量大於1時,表示按照間隔時間,截取到指定數量的映像時就停止截圖。

    • 只設定截圖數量時,表示按總時間長度/截圖數量的時間間隔,平均截圖。

    名稱

    必選

    在文字框中輸入本節點名稱。

    輸出路徑

    必選

    單擊選擇,在Bucket下拉式清單中,選擇Bucket名稱。路徑下方會顯示對應Bucket已經建立好的檔案夾,在檔案夾下選擇一個地址作為輸出路徑。

    說明
    • 單張截圖路徑格式:http://bucket.oss-cn-hangzhou.aliyuncs.com/path/{RunId}/{SnapshotTime}.jpg

    • 多張截圖/平均截圖路徑格式:需要使用{Count}預留位置,即path後為/{RunId}/{SnapshotTime}/{Count}.jpg

    開始時間

    非必選

    在下拉式清單中按時、分、秒,選擇時間。

    寬度x高度

    非必選

    在輸入框中分別填寫寬度和高度值。

    說明
    • 如果寬和高都不設定時,圖片的尺寸和視頻相同。

    • 如果只設定寬(或高)時,另一邊會按照視頻的解析度保持比例不變,避免映像變形。

    產生Webvtt索引檔案

    多張截圖、平均截圖時可選

    單擊開關按鈕,表示需要產生webVTT格式的索引檔案。

    設為封面

    非必選

    單擊開關按鈕,此節點截取的圖片會自動化佈建為媒體庫中該媒體的封面,當有多張截圖時,預設第一張設為封面。

    主要畫面格

    非必選

    單擊開關按鈕,截圖類型如果為主要畫面格,則表示只截取主要畫面格,如對應指定時間點為非主要畫面格,則就近選取主要畫面格。

    黑屏檢測

    多張截圖、平均截圖時可選

    單擊開關按鈕,會檢測視頻的前5秒,如果前5秒記憶體在畫面,則截取第一幀非黑屏的畫面。

  8. 單擊確定,完成截圖節點設定。

  9. 單擊儲存,完成工作流程配置。

    說明

    工作流程建立完成後,當有合格新檔案進入指定路徑時,會自動觸發工作流程執行。更多觸發方式說明,請參見觸發工作流程

API提交截圖任務image.png

  1. 上傳視頻到OSS。

  2. 提交截圖任務。調用提交截圖作業介面,通過指定SnapshotConfig參數,來實現提交同步單張截圖、非同步單張截圖、雪碧圖、WebVTT截圖等功能。SnapshotConfig參數結構樣本如下,詳見參數詳情

    同步單張截圖

    在視頻第100毫秒處截取1張主要畫面格。輸出圖片寬為1280px,高度自適應。儲存為jpg格式。
    同步模式不可設定Num和Interval參數,不支援輸出雪碧圖和vtt。
    {
      "Time":"100",
      "FrameType":"intra",
      "Width":"1280",
      "OutputFile":{
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example.jpg"
    	}
    }

    非同步單張截圖

    在視頻開頭截取1張主要畫面格,開啟首幀黑屏檢測。輸出圖片的尺寸和視頻相同。儲存為jpg格式。
    {
      "Num":"1",
      "Time":"0",
      "FrameType":"intra",
      "BlackLevel":"100",
      "PixelBlackThreshold":"30",
      "OutputFile":{
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example.jpg"
    	}
    }

    採樣截圖

    從視頻開頭開始,每隔10秒截取一張普通幀,直到截夠200張或到視頻結尾。
    對第一張圖開啟首幀黑屏檢測。輸出圖片的尺寸和視頻相同。儲存為example{Count}.jpg。
    {
      "Num":"200",
      "Time":"0",
      "Interval":"10",
      "FrameType":"normal",
      "BlackLevel":"100",
      "PixelBlackThreshold":"30",
      //為了避免檔案覆蓋,多張截圖OutputFile必須設定{Count}預留位置
      "OutputFile":{
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example{Count}.jpg"
    	}
    }

    平均截圖

    從視頻第100毫秒開始到片尾之間,均勻截取200張普通幀。輸出圖片寬為1280px,高為720px。儲存為example{Count}.jpg。
    {
      "Num":"200",
      "Time":"100",
      "Interval":"0",
      "FrameType":"normal",
      "Width":"1280",
      "Height":"720",
      //為了避免檔案覆蓋,多張截圖OutputFile必須設定{Count}預留位置
      "OutputFile":{
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example{Count}.jpg"
    	}
    }

    雪碧圖

    從視頻第100毫秒開始到片尾之間,均勻截取200張普通幀。輸出圖片寬為1280px,高為720px。
    將小圖按10*10的布局拼接成雪碧圖,雪碧圖儲存在example-bucket002中,小圖儲存在example-bucket001中。
    {
      "Num":"200",
      "Time":"100",
      "Interval":"0",
      "FrameType":"normal",
      "Width":"1280",
      "Height":"720",
      //為了避免檔案覆蓋,多張截圖OutputFile必須設定{Count}預留位置
      "OutputFile":{
     		"Bucket":"example-bucket001",
    	  "Location":"oss-cn-hangzhou",
    	  "Object":"example{Count}.jpg"
    	},
      "TileOut":{
        "Lines":10,
        "Columns":10,
        "Padding":"2",
        "Margin":"4",
        "Color":"black",
        "IsKeepCellPic":"true"
      },
      //為了避免檔案覆蓋,請將OutputFile和TileOutputFile設定成不同Bucket或Object路徑,且雪碧圖TileOutputFile必須設定{TileCount}預留位置
      "TileOutputFile":{ 
      	"Bucket":"example-bucket002",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example{TileCount}.jpg"
    	}
    }

    WebVTT圖

    從視頻第100毫秒開始到片尾之間,均勻截取200張普通幀。輸出圖片寬為1280px,高為720px。輸出vtt檔案。
    {
      "Num":"200",
      "Time":"100",
      "Interval":"0",
      "FrameType":"normal",
      "Width":"1280",
      "Height":"720",
      //輸出vtt檔案,Object尾碼必須設定為.vtt。對應的圖片路徑為example/snapshot-tile-{Count}.jpg
      "OutputFile": {
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example.vtt"
    	},
      "Format":"vtt",
      "SubOut":{
        "IsSptFrag":"true"
      }
    }
  3. 同步單張截圖任務會通過介面直接返回任務結果,非同步任務需配置MNS回調或主動查詢。

    說明

    如果輸入檔案過大可能會導致逾時失敗,請酌情增加重試機制。

  4. 接收回調訊息(推薦)。

    非同步任務完成後,如果配置了官大MNS訊息通知,會向Simple Message Queue (formerly MNS)指定的隊列或主題發送訊息。詳細資料請參見接收訊息通知

  5. 查詢作業結果。

    調用查詢截圖作業結果介面,通過指定多個截圖作業ID進行查詢。或不指定具體的截圖作業ID,通過篩選截圖狀態、建立時間、管道等條件,進行分頁查詢。

SDK提交截圖任務

SDK類型

操作指南

Java SDK

截圖

Python SDK

截圖

PHP SDK

截圖

PHP SDK(升級版)

截圖

Node.js SDK

截圖

GO SDK

截圖

常見問題

截圖常見問題,請參見截圖常見問題