全部產品
Search
文件中心

Intelligent Media Management:視頻截幀

更新時間:Jun 28, 2025

本文介紹了如何利用Intelligent Media Management(IMM)中的媒體轉碼介面來實現將視頻截幀儲存為靜態圖片的功能。

功能簡介

視頻截幀是指從視頻中提取特定幀映像的過程,其目的是將視頻中某一特定時刻的畫面儲存為靜態圖片。

image

使用情境

  • 快照:將視頻中的特定時刻儲存為靜態映像,以此製作海報。

  • 分析:提取主要畫面格以便進行後續分析,例如Face Service、物體檢測等。

  • 封面製作:為視頻建立縮圖或封面圖。

  • 播放總結:從視頻中篩選多個關鍵時刻,以產生簡潔的總結或預覽。

  • 截圖分享與記錄:使用者在觀看視頻時,如果遇到喜歡的畫面希望進行儲存或分享,可以通過截取該時刻的視訊框架來實現。

支援音視頻格式列表

分類

格式

音頻

AAC、MP3、WAV、FLAC、WMA、AC3、OPUS等所有主流格式。

視頻

MP4、MPEG-TS、MKV、MOV、AVI、FLV、M3U8、WebM、WMV、RM、VOB等所有主流格式。

如何使用

前提條件

步驟一:上傳檔案

請使用OSS管理主控台將媒體檔案上傳至IMM專案所在地區的Bucket。

image

步驟二:使用IMM視頻截幀

調用CreateMediaConvertTask - 建立媒體轉碼任務介面建立視頻截幀任務。

參數說明

以下樣本使用IMM專案的test-project,針對視頻檔案oss://test-bucket/video-demo/釀酒.mov進行視頻截幀處理。更多有關ApsaraVideo for Media Processing各功能介紹和使用,請參見媒體轉碼

說明
  • 您可以通過OpenAPI 門戶使用媒體轉碼介面對視頻檔案進行處理,具體可參考SDK代碼。

  • 視頻截幀請勿設定Target.URITarget.Container參數。

  • Targets中URI檔案名稱建議使用變數設定為snapshot-{index}.{autoext}格式,截幀儲存後將產生snapshot-1.pngsnapshot-2.png這種檔案名稱,相關變數請參見TargetURI模板

截取一幀用於視頻封面

截取一幀以作為視頻封面,確保該圖片的解析度與視頻保持一致。

image

  • 截幀圖片格式: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

image

  • 截幀圖片格式: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格式圖片。

image

  • 截幀圖片格式: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

展開以填滿。在按照固定寬高進行強制縮放時,若寬高與原圖的寬高比例不一致,將導致圖片出現變形現象。

image

crop

縮放與裁剪。進行等比縮放時,縮圖為擴充至指定寬度和高度的矩形框外的最小映像,隨後按照固定的寬度和高度進行裁剪。

image

fill

縮放並保留黑邊。進行等比縮放,縮圖應限制在指定寬度和高度的矩形內,以最大程度地展示圖片,隨後再按照固定寬高進行黑色填充。

image

fit

縮放過程不會保留黑邊。在等比縮放中,縮圖會限制在指定寬度和高度的矩形內顯示最大圖片。如果縮放後的寬高與原圖的寬高比例不同,將會導致圖片的寬高與指定的寬高不一致。

image