視頻截圖是指對視頻截取指定時間、指定尺寸的圖片,用於生產視頻封面、雪碧圖、播放器進度條縮圖等情境。本文為您介紹ApsaraVideo for Media Processing中提交視頻截圖的操作步驟。
功能概述
應用情境
視頻封面:選取首幀作為feed流短視頻的封面圖,或截取視頻指定時間點的畫面作為封面。
視頻預覽:製作視頻內容縮圖。當使用者在播放器的時間軸上懸停時,可以顯示視頻特定時間點的靜態縮圖,協助使用者快速探索視頻內容,並跳轉到他們感興趣的部分。
視頻審核:對視頻內容進行截圖採樣,供人工或機器審核。
功能特性
功能 | 說明 | API相關參數 | 控制台操作 |
靜態截圖 | 對視頻截取指定時間、指定尺寸的JPG圖片。提供以下幾種採樣方式:
| SnapshotConfig | 支援 |
雪碧截圖 | 設定後,對截取的一系列靜態圖片,會按照指定的排列規則拼成一張大圖,這張大圖即為雪碧圖。格式為JPG。僅支援非同步呼叫。通過一次請求雪碧圖可擷取多張圖片的資訊,實現大幅降低圖片請求數量,提高用戶端效能。 | TileOut、TileOutputFile | 不支援 |
WebVTT截圖 | 設定後,對截取的一系列靜態圖片或雪碧圖,會產生VTT檔案,檔案包含截圖時間、截圖檔案地址、雪碧圖座標資訊。在使用圖片時需要先擷取VTT檔案,解析圖片的資訊進行展示。可用於播放器進度條縮圖展示。 | SubOut | 支援 |
主要畫面格截圖 | 設定後,只截取主要畫面格。如對應指定時間點為非主要畫面格,則就近選取主要畫面格。 | FrameType | 支援 |
首幀黑屏檢測 | 對於首幀圖片(time=0)可以使用黑屏檢測。通過設定黑色像素的畫面比例和顏色值定義黑屏。截圖時會檢測視頻的前5秒,如果有非黑屏圖片,則截取非黑屏圖片;否則,單圖任務返回失敗,多圖任務截取第一幀黑屏圖片。 | BlackLevel、PixelBlackThreshold | 支援 |
計費說明
按截圖張數收取功能介面請求費用。詳細計費說明,請參見功能介面請求定價。
控制台提交截圖任務
控制台僅支援通過工作流程提交截圖任務。
在頂部功能表列左側選擇地區。

在左側導覽列,選擇。
單擊建立工作流程。
按需配置輸入節點。
添加截圖節點。

單擊截圖節點右側的筆形表徵圖,配置截圖參數。
參數
是否必選
說明
截圖方式
必選
單張截圖:設定一個明確的截圖時間點,截取對應的視頻映像。
多張截圖:按照設定的間隔時間,均勻的截取對應視頻的多幀映像,每幀映像都是一個圖片檔案。也叫批量截圖、序列截圖。
平均截圖:按照設定的截圖張數,均勻地對視頻進行切分並截取指定數量的映像。
截圖間隔時間(秒)
多張截圖時必選
在文字框中輸入截圖間隔時間,單位為秒。
截圖數量
平均截圖時必選
在文字框中輸入截圖數量。
說明不設定截圖數量時,表示按照間隔時間,一直截取到視頻結尾。
截圖數量大於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秒記憶體在畫面,則截取第一幀非黑屏的畫面。
單擊確定,完成截圖節點設定。
單擊儲存,完成工作流程配置。
說明工作流程建立完成後,當有合格新檔案進入指定路徑時,會自動觸發工作流程執行。更多觸發方式說明,請參見觸發工作流程。
API提交截圖任務
上傳視頻到OSS。
提交截圖任務。調用提交截圖作業介面,通過指定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" } }同步單張截圖任務會通過介面直接返回任務結果,非同步任務需配置MNS回調或主動查詢。
說明如果輸入檔案過大可能會導致逾時失敗,請酌情增加重試機制。
接收回調訊息(推薦)。
非同步任務完成後,如果配置了官大MNS訊息通知,會向Simple Message Queue (formerly MNS)指定的隊列或主題發送訊息。詳細資料請參見接收訊息通知。
查詢作業結果。
調用查詢截圖作業結果介面,通過指定多個截圖作業ID進行查詢。或不指定具體的截圖作業ID,通過篩選截圖狀態、建立時間、管道等條件,進行分頁查詢。
SDK提交截圖任務
SDK類型 | 操作指南 |
Java SDK | |
Python SDK | |
PHP SDK | |
PHP SDK(升級版) | |
Node.js SDK | |
GO SDK |
常見問題
截圖常見問題,請參見截圖常見問題。