本文介紹了如何利用Intelligent Media Management(IMM)中的媒體轉碼介面來實現將視頻截幀儲存為靜態圖片的功能。
功能簡介
視頻截幀是指從視頻中提取特定幀映像的過程,其目的是將視頻中某一特定時刻的畫面儲存為靜態圖片。

使用情境
快照:將視頻中的特定時刻儲存為靜態映像,以此製作海報。
分析:提取主要畫面格以便進行後續分析,例如Face Service、物體檢測等。
封面製作:為視頻建立縮圖或封面圖。
播放總結:從視頻中篩選多個關鍵時刻,以產生簡潔的總結或預覽。
截圖分享與記錄:使用者在觀看視頻時,如果遇到喜歡的畫面希望進行儲存或分享,可以通過截取該時刻的視訊框架來實現。
支援音視頻格式列表
分類 | 格式 |
音頻 | AAC、MP3、WAV、FLAC、WMA、AC3、OPUS等所有主流格式。 |
視頻 | MP4、MPEG-TS、MKV、MOV、AVI、FLV、M3U8、WebM、WMV、RM、VOB等所有主流格式。 |
如何使用
前提條件
已建立並擷取AccessKey。具體操作,請參見建立AccessKey。
已開通OSS服務、建立儲存空間。具體操作,請參見建立儲存空間。
已開通Intelligent Media Management服務。具體操作,請參見開通產品。
已通過Intelligent Media Management控制台建立專案。具體操作,請參見建立專案。
說明您也可以調用API介面建立專案。具體操作,請參見CreateProject - 建立專案。
您可以調用ListProjects - 列出所有專案資訊的列表介面列出指定地區下已建立的所有專案資訊。
步驟一:上傳檔案
請使用OSS管理主控台將媒體檔案上傳至IMM專案所在地區的Bucket。

步驟二:使用IMM視頻截幀
調用CreateMediaConvertTask - 建立媒體轉碼任務介面建立視頻截幀任務。
參數說明
以下樣本使用IMM專案的test-project,針對視頻檔案oss://test-bucket/video-demo/釀酒.mov進行視頻截幀處理。更多有關ApsaraVideo for Media Processing各功能介紹和使用,請參見媒體轉碼。
您可以通過OpenAPI 門戶使用媒體轉碼介面對視頻檔案進行處理,具體可參考SDK代碼。
視頻截幀請勿設定
Target.URI和Target.Container參數。Targets中URI檔案名稱建議使用變數設定為
snapshot-{index}.{autoext}格式,截幀儲存後將產生snapshot-1.png、snapshot-2.png這種檔案名稱,相關變數請參見TargetURI模板。
截取一幀用於視頻封面
截取一幀以作為視頻封面,確保該圖片的解析度與視頻保持一致。

截幀圖片格式:jpg
截幀起始時間:5秒
截幀數量:1
截幀圖片儲存路徑:oss://test-bucket/video-demo/cover.jpg
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"StartTime": 5,
"Number": 1,
"URI": "oss://test-bucket/video-demo/cover.jpg"
}
]
}
}
]
}每10秒截1幀圖片用於AI模型訓練或推理
每10秒截取一幀映像,用於AI模型的訓練或推理,輸出映像的解析度限制為512x512。

截幀圖片格式:jpg
截幀間隔:10秒
縮放方式:縮放並裁剪,縮放方式說明請參見縮放方式。
輸出圖片寬度:512px
輸出圖片高度:512px
截幀圖片儲存路徑:oss://test-bucket/video-demo/snapshot-%d.png
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Interval": 10,
"ScaleType": "crop",
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}",
"Width": 512,
"Height": 512
}
]
}
}
]
}每隔4秒截1幀,共截5幀用於分析視頻片段
從第11秒開始,每隔4秒截取1幀,共截取5幀用於分析視頻片段。輸出的圖片寬高為視頻解析度的1/2,並儲存為PNG格式圖片。

截幀圖片格式:png
截幀起始時間:第11秒
截幀間隔:4秒
截幀數量:5
縮放方式:縮放並裁剪,縮放方式說明請參見縮放方式
輸出圖片寬度:原視頻解析度寬度的1/2
輸出圖片高度:原視頻解析度高度的1/2
截幀圖片儲存路徑:oss://test-bucket/video-demo/snapshot-%d.png
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "png",
"StartTime": 11,
"Interval": 4,
"Number": 5,
"ScaleType": "crop",
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}",
"Width": 0.5,
"Height": 0.5
}
]
}
}
]
}截取視頻中的事件主要畫面格
通過dhash分析視訊框架的內容相似性,並配合閾值提取映像內容變化較大的幀作為事件主要畫面格。
閾值(Threshold)需根據具體業務情境進行調整。
輸出圖片格式:jpg
截幀間隔:1秒
截幀模式:dhash
閾值:15
截幀圖片儲存路徑:oss://test-bucket/video-demo/snapshot-%d.png
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Interval": 1,
"Mode": "dhash",
"Threshold": 15,
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}"
}
]
}
}
]
}截取視頻中最具代表性的5個事件主要畫面格,用於推理
通過dhash分析視訊框架的內容相似性,並截取映像內容變化最大的5幀。
輸出圖片格式:jpg
截幀間隔:1秒
截幀模式:dhash
截幀數量:5
截幀圖片儲存路徑:oss://test-bucket/video-demo/snapshot-%d.png
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Interval": 1,
"Mode": "dhash",
"Number": 5,
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}"
}
]
}
}
]
}截取視頻中的所有IDR幀
輸出圖片格式:jpg
截幀模式:keyframe
截幀圖片儲存路徑:oss://test-bucket/video-demo/snapshot-%d.png
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Mode": "keyframe",
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}"
}
]
}
}
]
}以均勻時間間隔截取10幀
輸出圖片格式:jpg
截幀模式:average
截幀數量:10
截幀圖片儲存路徑:oss://test-bucket/video-demo/snapshot-%d.png
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/釀酒.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Mode": "average",
"Number": 10,
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}"
}
]
}
}
]
}截取音頻封面
輸出圖片格式:jpg
截幀數量:1
輸出圖片儲存路徑:oss://test-bucket/video-demo/cover.jpg
截幀完成訊息通知:發送MNS訊息到MNS主題“test-mns-topic”
SDK樣本請參見OpenAPI門戶,已為您自動填滿樣本參數,請根據實際需求進行修改後再進行調試。
請求參數程式碼範例如下:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/test.mp3"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Number": 1,
"URI": "oss://test-bucket/video-demo/cover.jpg"
}
]
}
}
]
}計費說明
在視頻截幀過程中, OSS 和 IMM 兩側會產生以下計費項目:
OSS 側: 詳細定價請參見OSS產品定價。
API
計費項目
說明
GetObject
GET 類型請求
根據成功的請求次數計算請求費用。
低頻訪問資料取回容量
如果取回的資料是低頻訪問資料,會產生低頻訪問資料取回容量的費用,按資料取回量計費。
歸檔直讀資料取回容量
如果讀取的是歸檔的Object且Bucket開啟了歸檔直讀,會產生歸檔直讀資料取回容量費用,根據取回的資料容量大小計費。
傳輸加速
如果開啟了傳輸加速功能且使用傳輸加速網域名稱訪問您的Bucket會產生傳輸加速費用,根據資料容量大小計費。
PutObject
PUT類型請求
根據成功的請求次數計算請求費用。
儲存費用
根據Object的儲存類型、大小和時間長度收取儲存費用。
HeadObject
GET 類型請求
根據成功的請求次數計算請求費用。
IMM 側: 詳細定價請參見IMM計費項目。
重要自北京時間 2025 年 7 月 28 日 11:00 起,IMM 視頻截幀服務價格將會進行調整。更多資訊,請參見IMM計費調整公告。
API
計費項目
說明
CreateMediaConvertTask
VideoFraming
根據成功的截幀數量計算視頻截幀的費用。
縮放方式
縮放方式 | 縮放效果 |
stretch 展開以填滿。在按照固定寬高進行強制縮放時,若寬高與原圖的寬高比例不一致,將導致圖片出現變形現象。 |
|
crop 縮放與裁剪。進行等比縮放時,縮圖為擴充至指定寬度和高度的矩形框外的最小映像,隨後按照固定的寬度和高度進行裁剪。 |
|
fill 縮放並保留黑邊。進行等比縮放,縮圖應限制在指定寬度和高度的矩形內,以最大程度地展示圖片,隨後再按照固定寬高進行黑色填充。 |
|
fit 縮放過程不會保留黑邊。在等比縮放中,縮圖會限制在指定寬度和高度的矩形內顯示最大圖片。如果縮放後的寬高與原圖的寬高比例不同,將會導致圖片的寬高與指定的寬高不一致。 |
|



