このトピックでは、Intelligent Media Management (IMM) のメディアトランスコーディング操作を使用して、キャプチャしたフレームを静止画像として保存する方法について説明します。
機能紹介
フレームキャプチャとは、動画から特定のフレーム画像を抽出し、動画内の特定の瞬間を静止画像として保存する処理のことです。

シナリオ
スナップショット: 動画内の特定の瞬間を静止画像として保存して、ポスターを作成します。
分析: 顔認識やオブジェクト検出など、後続の分析のためにキーフレームを抽出します。
サムネイル作成: 動画のサムネイルまたはカバー画像を作成します。
再生サマリー: 動画から複数の重要な瞬間を選択して、簡潔なサマリーまたはプレビューを生成します。
スクリーンショットの共有と録画: ユーザーが動画を視聴していて、気に入ったフレームを保存または共有したい場合、その瞬間の動画フレームをキャプチャできます。
サポートされているオーディオおよびビデオ形式
カテゴリ | 形式 |
オーディオ | AAC、MP3、WAV、FLAC、WMA、AC3、Opus など、主要なオーディオ形式。 |
ビデオ | MP4、MPEG-TS、MKV、MOV、AVI、FLV、M3U8、WebM、WMV、RM、VOB など、主要なビデオ形式。 |
使用方法
前提条件
AccessKey ペアが作成され、取得されています。詳細については、「AccessKey ペアを作成する」をご参照ください。
Object Storage Service (OSS) が有効化され、バケットが作成されています。詳細については、「バケットを作成する」をご参照ください。
IMM が有効化されています。詳細については、「IMM を有効化する」をご参照ください。
IMM コンソールでプロジェクトが作成されます。詳細については、「プロジェクトを作成する」をご参照ください。
説明CreateProject 操作を呼び出して、プロジェクトを作成できます。詳細については、「CreateProject」をご参照ください。
ListProjects 操作を呼び出して、リージョン内のすべてのプロジェクトの情報を一覧表示できます。
ステップ 1: ファイルをアップロードする
OSS コンソール を使用して、IMM プロジェクトが配置されているリージョンのバケットにメディアファイルをアップロードします。

ステップ 2: IMM フレームキャプチャ機能を使用する
CreateMediaConvertTask 操作を呼び出して、フレームキャプチャタスクを作成します。
パラメータの説明
次の例では、IMM プロジェクト test-project を使用して、ビデオファイル oss://test-bucket/video-demo/Winemaking.mov からフレームをキャプチャします。 メディア処理機能の詳細については、「メディアトランスコーディング」をご参照ください。
OpenAPI Explorer でメディアトランスコーディング操作を使用してビデオファイルを処理できます。 詳細については、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
フレームキャプチャ完了通知: Message Service (MNS) メッセージを MNS トピック "test-mns-topic" に送信
SDK サンプルコードについては、OpenAPI Explorer にアクセスしてください。サンプルコードのパラメータは、参照用に自動的に設定されています。デバッグを実行する前に、ビジネス要件に基づいてパラメータを変更してください。
サンプルリクエストパラメータ:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"StartTime": 5,
"Number": 1,
"URI": "oss://test-bucket/video-demo/cover.jpg"
}
]
}
}
]
}AI モデルのトレーニングまたは推論のために 10 秒ごとに 1 フレームをキャプチャする
AI モデルのトレーニングまたは推論のために 10 秒ごとに 1 フレームをキャプチャし、出力画像の解像度を 512x512 に制限します。

キャプチャされたフレーム形式: jpg
フレームキャプチャ間隔: 10 秒
サイズ変更方法: トリミング。サイズ変更方法の詳細については、「サイズ変更方法」をご参照ください。
出力画像の幅: 512px
出力画像の高さ: 512px
キャプチャされたフレームへのパス: oss://test-bucket/video-demo/snapshot-%d.png
フレームキャプチャ完了通知: MNS メッセージを MNS トピック "test-mns-topic" に送信
SDK サンプルコードについては、OpenAPI Explorer にアクセスしてください。サンプルコードのパラメータは、参照用に自動的に設定されています。デバッグを実行する前に、ビジネス要件に基づいてパラメータを変更してください。
サンプルリクエストパラメータ:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.mov"
}
],
"Targets": [
{
"Image": {
"Snapshots": [
{
"Format": "jpg",
"Interval": 10,
"ScaleType": "crop",
"URI": "oss://test-bucket/video-demo/snapshot-{index}.{autoext}",
"Width": 512,
"Height": 512
}
]
}
}
]
}ビデオセグメントを分析するために、4 秒間隔で合計 5 つのフレームをキャプチャする
11 秒目から開始して、ビデオセグメントを分析するために、4 秒間隔で合計 5 つのフレームをキャプチャします。出力画像の幅と高さはビデオ解像度の半分で、画像は PNG 形式で保存されます。

キャプチャされたフレーム形式: png
フレームキャプチャ開始時刻: 11 秒目
フレームキャプチャ間隔: 4 秒
キャプチャされたフレーム数: 5
サイズ変更方法: トリミング。サイズ変更方法の詳細については、「サイズ変更方法」をご参照ください。
出力画像の幅: 入力ビデオ解像度の幅の 1/2
出力画像の高さ: 入力ビデオ解像度の高さの 1/2
キャプチャされたフレームへのパス: oss://test-bucket/video-demo/snapshot-%d.png
フレームキャプチャ完了通知: MNS メッセージを MNS トピック "test-mns-topic" に送信
SDK サンプルコードについては、OpenAPI Explorer にアクセスしてください。サンプルコードのパラメータは、参照用に自動的に設定されています。デバッグを実行する前に、ビジネス要件に基づいてパラメータを変更してください。
サンプルリクエストパラメータ:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.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 を使用してビデオフレームのコンテンツの類似性を分析し、しきい値に基づいて画像コンテンツの変更が大きいフレームをイベントキーフレームとして抽出します。
しきい値は、特定のビジネスシナリオに応じて調整する必要があります。
出力画像形式: jpg
フレームキャプチャ間隔: 1 秒
フレームキャプチャモード: dhash
しきい値: 15
キャプチャされたフレームへのパス: oss://test-bucket/video-demo/snapshot-%d.png
フレームキャプチャ完了通知: MNS メッセージを MNS トピック "test-mns-topic" に送信
SDK サンプルコードについては、OpenAPI Explorer をご参照ください。 サンプルコードのパラメーターは参照用に自動的に設定されます。 デバッグを実行する前に、ビジネス要件に基づいてパラメーターを変更してください。
サンプルリクエストパラメータ:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.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 Explorer をご参照ください。 サンプルコードのパラメーターは参照用に自動的に設定されます。 デバッグを実行する前に、ビジネス要件に基づいてパラメーターを変更してください。
リクエストパラメーターの例:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.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 Explorer をご参照ください。 サンプルコードのパラメーターは参照用に自動的に設定されます。 デバッグを実行する前に、ビジネス要件に基づいてパラメーターを変更してください。
リクエストパラメーターの例:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.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 Explorer をご参照ください。 サンプルコードのパラメーターは参照用に自動的に設定されます。 デバッグを実行する前に、ビジネス要件に基づいてパラメーターを変更してください。
リクエストパラメーターの例:
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/Winemaking.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 Explorer をご参照ください。 サンプルコードのパラメーターは参照用に自動的に設定されます。 デバッグを実行する前に、ビジネス要itに基づいてパラメーターを変更してください。
サンプルリクエストパラメータ:
{
"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 リクエスト
成功したリクエストの数に基づいてリクエスト料金が課金されます。
IA オブジェクトの取得
IA オブジェクトが取得された場合、取得された IA データのサイズに基づいて IA データ取得料金が課金されます。
リアルタイムアクセスが有効になっているバケット内のアーカイブオブジェクトの取得
リアルタイムアクセスが有効になっているバケット内のアーカイブオブジェクトが取得された場合、取得されたアーカイブオブジェクトのサイズに基づいてアーカイブデータ取得料金が課金されます。
転送アクセラレーション
転送アクセラレーションを有効にし、アクセラレーションエンドポイントを使用してバケットにアクセスする場合、データサイズに基づいて転送アクセラレーション料金が課金されます。
PutObject
PUT リクエスト
成功したリクエストの数に基づいてリクエスト料金が課金されます。
ストレージ料金
オブジェクトのストレージタイプ、サイズ、およびストレージ期間に基づいてストレージ料金が課金されます。
HeadObject
GET リクエスト
成功したリクエストの数に基づいてリクエスト料金が課金されます。
IMM 側: 詳細な料金については、「IMM の課金項目」をご参照ください。
重要2025 年 7 月 28 日 11:00 (UTC+8) から、IMM フレームキャプチャサービスの価格が調整されます。 詳細については、「IMM 課金調整のお知らせ」をご参照ください。
API
課金項目
説明
CreateMediaConvertTask
VideoFraming
正常にキャプチャされたフレームの数に基づいて、ビデオフレームキャプチャに対して課金されます。
サイズ変更メソッド
サイズ変更方法 | サイズ変更効果 |
stretch 画像をストレッチしてスペース全体を塗りつぶします。画像が指定された幅と高さに基づいて強制的にサイズ変更された場合、幅と高さの比率が入力画像の比率と一致しない場合、出力画像は歪みます。 |
|
crop 画像のサイズを変更してトリミングします。画像は、指定された幅と高さに基づいて長方形の外側で可能な限り小さく比例的にサイズ変更され、次に指定された幅と高さに基づいてトリミングされます。 |
|
fill 画像のサイズを変更し、黒い境界線を保持します。画像は、指定された幅と高さに基づいて長方形内で可能な限り大きく比例的にサイズ変更されます。長方形の空のスペースは黒色で塗りつぶされます。 |
|
fit 画像のサイズを変更し、黒い境界線を保持しません。画像は、指定された幅と高さに基づいて長方形内で可能な限り大きく比例的にサイズ変更されます。出力画像の幅と高さの比率が入力画像の幅と高さの比率と異なる場合、サイズ変更された画像の幅と高さは指定された幅と高さとは異なります。 |
|



