すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Media Processing:ビデオのスナップショット

最終更新日:Jan 12, 2025

ビデオのスナップショット機能を使用すると、ビデオの特定の時点における特定のサイズのスナップショットを取得できます。スナップショットは、ビデオのサムネイル、スプライト、プログレスバーのサムネイルの生成に使用されます。このトピックでは、ApsaraVideo Media Processing(MPS)でビデオのスナップショットを取得するためのスナップショットジョブを送信する方法について説明します。

概要

シナリオ

  • ビデオのサムネイル:短いビデオのフィードストリームでビデオの最初のフレームをビデオのサムネイルとしてキャプチャしたり、ビデオの特定の時点におけるスナップショットをビデオのサムネイルとしてキャプチャしたりできます。

  • ビデオのプレビュー:ビデオコンテンツに基づいてサムネイルを作成できます。プレーヤーでビデオのタイムライン上にポインターを移動すると、特定の時点におけるビデオの静的サムネイルが表示されます。これにより、ビデオコンテンツをすばやく閲覧し、目的のコンテンツを探すのに役立ちます。

  • ビデオのモデレーション:手動または自動レビューのために、ビデオの複数のスナップショットを取得できます。

機能

機能

説明

API操作のパラメーター

MPSコンソール

静的スナップショット

この機能を使用すると、JPG形式でビデオの特定の時点における特定のサイズのスナップショットを取得できます。次のスナップショットモードが提供されています。

  • 単一:ビデオの特定の時点におけるスナップショットが取得されます。このタイプのスナップショットは、同期または非同期で取得できます。

  • 複数:特定の時点から特定の間隔で、特定の数のスナップショットが取得されるか、ビデオが終了するまでスナップショットが取得されます。間隔は秒単位で指定できます。このタイプのスナップショットは非同期で取得されます。

  • 平均:ビデオの特定の時点からビデオの最後まで、一定の間隔で特定の数のスナップショットが取得されます。このタイプのスナップショットは非同期で取得されます。

  • 時点(ベータテスト中):ビデオの指定された時点におけるスナップショットが取得されます。このタイプのスナップショットは非同期で取得されます。

SnapshotConfig

サポートされています

スプライトスナップショット

この機能を使用すると、特定のルールに基づいて取得されたスナップショットを単一の画像にマージしてスプライトを作成できます。スプライトはJPG形式です。このタイプのスナップショットは非同期で取得されます。ユーザーは、一度に複数の画像に関する情報を照会するリクエストを送信できます。これにより、画像に対するAPIリクエストの数が大幅に削減され、クライアントのパフォーマンスが向上します。

TileOut and TileOutputFile

サポートされていません

WebVTTスナップショット

この機能を使用すると、取得されたスナップショットまたは作成されたスプライトのVTTファイルを生成できます。VTTファイルには、スナップショットが取得された時刻、スナップショットのパス、スプライト内のスナップショットの座標が含まれています。クライアントが画像をリクエストすると、対応するVTTファイルが取得され、解析された後に画像が表示されます。この機能は、プログレスバーにサムネイルを表示するために使用できます。

SubOut

サポートされています

キーフレームスナップショット

この機能を使用すると、キーフレームのみを取得できます。指定された時点のフレームがキーフレームでない場合は、隣接するキーフレームが取得されます。

FrameType

サポートされています

黒画面検出

この機能を使用すると、最初のスナップショットが黒画面かどうかを検出できます。この機能を使用するには、Timeパラメーターを0に設定します。これは、ビデオの開始からスナップショットが取得されることを指定します。画像内の黒いピクセルの割合と黒いピクセルの色の値を指定することで、黒画面を定義できます。黒画面検出機能が有効になっている場合、システムはビデオの最初の5秒間のフレームをチェックします。黒以外のフレームが存在する場合、黒以外のフレームが取得されます。それ以外の場合、ジョブが単一スナップショットジョブの場合はジョブは失敗し、ジョブが複数スナップショットジョブの場合は最初の黒いフレームが取得されます。

BlackLevel and PixelBlackThreshold

サポートされています

説明

スナップショット料金は、スナップショットの数に基づいて課金されます。詳細については、「音声とビデオのトランスコーディング料金」トピックの「API呼び出しの料金」セクションをご参照ください。

MPSコンソールでスナップショットジョブを送信する

説明

MPSコンソールでは、ワークフローを使用してのみスナップショットジョブを送信できます。

  1. MPSコンソール にログインします。

  2. 上部のナビゲーションバーで、ドロップダウンリストからリージョンを選択します。地域

  3. 左側のナビゲーションペインで、[ワークフロー] > [ワークフローオーケストレーション] を選択します。

  4. [ワークフローの作成] ページで、[ワークフローの作成] をクリックします。

  5. [入力] ノードで、ビジネス要件に基づいて [入力] ノードを構成します。

  6. [スナップショット] ノードを追加します。image.png

  7. [スナップショット] ノードの横にあるペンアイコンをクリックします。[スナップショット] ダイアログボックスで、次の表に示すパラメーターを構成します。

    パラメーター

    必須

    説明

    スナップショットモード

    はい

    • 単一:特定の時点におけるビデオのスナップショットを取得します。

    • 複数:一定の間隔でビデオの複数のスナップショットを均等に取得する時間を指定します。各スナップショットは画像ファイルです。複数フレームのスナップショットは、バッチスナップショットまたは序数スナップショットとも呼ばれます。

    • 平均:ビデオを均等に分割し、指定されたスナップショット数に基づいてスナップショットを取得します。

    スナップショット間隔(秒)

    [スナップショットモード] パラメーターを [複数] に設定した場合、必須です

    スナップショットを取得する間隔。単位:秒。

    スナップショット

    [スナップショットモード] パラメーターを [平均] に設定した場合、必須です

    取得するスナップショットの数。

    説明
    • [スナップショット] パラメーターが指定されていない場合、ビデオの最後まで指定された間隔でスナップショットが取得されます。

    • [スナップショット] パラメーターの値が1より大きい場合、スナップショット数が指定された数に達するまで、指定された間隔でスナップショットが取得されます。

    • [スナップショット] パラメーターのみが指定されている場合、合計時間数をスナップショット数で割った値に基づいて、スナップショットが均等に取得されます。

    名前

    はい

    スナップショットノードの名前。

    出力パス

    はい

    OSSバケットに保存される出力ファイルのパスです。[選択] を [出力パス] フィールドの横にあるクリックします。[出力パスの選択] ダイアログボックスで、[バケット] ドロップダウンリストから OSS バケットを選択します。その後、OSSバケット内のフォルダーが [パス] セクションに自動的に表示されます。出力パスとしてフォルダーを選択します。

    説明
    • [スナップショットモード] パラメーターを [単一] に設定した場合、スナップショットは {SnapshotTime}.jpg の形式で名前が付けられ、OSSバケットの /path/{RunId} フォルダーにエクスポートされます。たとえば、出力パスは http://bucket.oss-cn-hangzhou.aliyuncs.com/path/{RunId}/{SnapshotTime}.jpg のようになります。

    • [スナップショットモード] パラメーターを [複数] または [平均] に設定した場合、{Count} プレースホルダーが使用されます。この場合、出力パスの後半部分は /{RunId}/{SnapshotTime}/{Count}.jpg の形式になります。

    開始時間

    いいえ

    ワークフローがスナップショットの取得を開始する時刻。ドロップダウンリストから時、分、秒を選択します。

    幅 X 高さ

    いいえ

    スナップショットの幅と高さ。

    説明
    • [幅] パラメーターも [高さ] パラメーターも指定されていない場合、出力スナップショットのサイズは入力ビデオのサイズと同じになります。

    • [幅] パラメーターと [高さ] パラメーターのいずれか一方のみが指定されている場合、指定されていない側は入力ビデオのアスペクト比に基づいてスケーリングされます。これにより、画像の変形を防ぎます。

    Webvttインデックスファイルを生成する

    [スナップショットモード] パラメーターを [複数] または [平均] に設定した場合、必須です

    WebVTT形式のサムネイルを使用するかどうかを指定します。

    サムネイルとして設定

    いいえ

    スナップショットをメディアファイルのサムネイルとして使用するかどかを指定します。スイッチをオンにすると、指定された時点で取得されたスナップショットがサムネイルとして使用されます。複数のスナップショットが取得された場合、デフォルトでは最初のスナップショットがサムネイルとして使用されます。

    キーフレーム

    いいえ

    キーフレームのみをスナップショットとして取得するかどうかを指定します。スイッチをオンにすると、キーフレームのみがスナップショットとして取得されます。指定された時点のフレームがキーフレームでない場合、MPSは最も近いキーフレームのスナップショットを取得します。

    黒画面検出

    [スナップショットモード] パラメーターを [複数] または [平均] に設定した場合、必須です

    ビデオの最初の5秒間を検出するかどうかを指定します。スイッチをオンにして、最初の5秒間に画像が表示された場合、最初の黒以外のフレームコンテンツが取得されます。

  8. [OK] をクリックします。スナップショットノードが構成されます。

  9. [保存] をクリックします。

    説明

    ワークフローの作成後に [入力パス] パラメーターで指定されたパスにファイルがアップロードされると、ワークフローがトリガーされます。ワークフローをトリガーする方法の詳細については、「ワークフローをトリガーする」をご参照ください。

API操作を呼び出してスナップショットジョブを送信する

  1. ビデオをOSSにアップロードします。

  2. スナップショットジョブを送信します。 SubmitSnapshotJob オペレーションを呼び出して、スナップショットジョブを送信できます。 SnapshotConfig パラメーターを設定して、スナップショットジョブを送信し、同期モードまたは非同期モードでスナップショットをキャプチャしたり、スプライトを生成したり、Web Video Text Tracks Format(WebVTT)スナップショットをキャプチャしたりできます。 SnapshotConfig パラメーターの詳細については、「パラメーターの詳細」をご参照ください。

    同期モードでスナップショットジョブを送信してスナップショットをキャプチャする

    ビデオの 100 ミリ秒目にキーフレームをキャプチャします。出力スナップショットの幅は 1,280 ピクセルで、出力スナップショットの高さは入力ビデオのアスペクト比に基づいて計算されます。スナップショットファイルは JPG 形式で保存されます。
    同期モードでスナップショットジョブを送信する場合は、Num パラメーターまたは Interval パラメーターを指定しないでください。同期モードのスナップショットジョブは、WebVTT スナップショットのキャプチャやスプライトの生成には使用できません。
    {
      "Time":"100",
      "FrameType":"intra",
      "Width":"1280",
      "OutputFile":{
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example.jpg"
    	}
    }

    非同期モードでスナップショットジョブを送信してスナップショットをキャプチャする

    ビデオの開始時にキーフレームをキャプチャし、黒画面検出機能を有効にします。出力スナップショットの幅と高さは、入力ビデオの幅と高さと同じです。スナップショットファイルは JPG 形式で保存されます。
    {
      "Num":"1",
      "Time":"0",
      "FrameType":"intra",
      "BlackLevel":"100",
      "PixelBlackThreshold":"30",
      "OutputFile":{
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example.jpg"
    	}
    }

    スナップショットジョブを送信して複数のスナップショットをキャプチャする

    ビデオの開始時から 200 フレームがキャプチャされるかビデオが終了するまで、10 秒ごとに通常のフレームをキャプチャします。
    最初のスナップショットに対して黒画面検出機能を有効にします。出力スナップショットの幅と高さは、入力ビデオの幅と高さと同じです。スナップショットには、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 の通常のフレームを均等にキャプチャします。出力スナップショットの幅と高さは、1,280 ピクセルと 720 ピクセルです。スナップショットには、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 の通常のフレームを均等にキャプチャします。出力スナップショットの幅と高さは、1,280 ピクセルと 720 ピクセルです。
    スナップショットを 10*10 のレイアウトでスプライトにマージします。スプライトは example-bucket002 という名前のバケットに保存され、元の snapshots は 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 パラメーターを異なるパスに設定します。 TileOutputFile パラメーターを構成するときは、プレースホルダー {TileCount} を指定する必要があります。
      "TileOutputFile":{ 
      	"Bucket":"example-bucket002",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example{TileCount}.jpg"
    	}
    }

    スナップショットジョブを送信して WebVTT スナップショットをキャプチャする

    ビデオの 100 ミリ秒目から終了まで、200 の通常のフレームを均等にキャプチャします。出力スナップショットの幅と高さは、1,280 ピクセルと 720 ピクセルです。出力スナップショットは WebVTT スナップショットです。
    {
      "Num":"200",
      "Time":"100",
      "Interval":"0",
      "FrameType":"normal",
      "Width":"1280",
      "Height":"720",
      // WebVTT スナップショットを生成します。 Object パラメーターの値のファイル名拡張子は .vtt に設定する必要があります。スナップショットファイルのストレージパスは example/snapshot-tile-{Count}.jpg です。
      "OutputFile": {
      	"Bucket":"example-bucket",
      	"Location":"oss-cn-hangzhou",
      	"Object":"example.vtt"
    	},
      "Format":"vtt",
      "SubOut":{
        "IsSptFrag":"true"
      }
    }
  3. 同期モードでスナップショットジョブを送信する操作を呼び出して単一のスナップショットをキャプチャする場合、ジョブの結果は操作のレスポンスで返されます。非同期モードのスナップショットジョブの場合は、Simple Message Queue (旧称 MNS) (SMQ) コールバックを設定するか、操作を呼び出して結果をクエリする必要があります。

    説明

    入力ファイルのサイズが非常に大きい場合、タイムアウトエラーが発生する可能性があります。ビジネス要件に基づいて再試行メカニズムを設定してください。

  4. 推奨。コールバック通知を設定します。

    スナップショットジョブの通知機能が有効になっている場合、スナップショットジョブの完了後に Simple Message Queue (formerly MNS) 内の指定されたキューまたはトピックで通知を受信できます。詳細については、「通知の受信」をご参照ください。

  5. スナップショットジョブの結果をクエリします。

    QuerySnapshotJobList オペレーションを呼び出すことで、ジョブ ID によってスナップショットジョブの結果をクエリできます。また、スナップショットジョブの状態、ジョブが作成された時刻、ジョブが送信された MPS キューなどの条件に基づいて、ページクエリを実行することもできます。この場合、スナップショットジョブの ID を指定する必要はありません。

SDK を使用してスナップショットジョブを送信する

SDK

リファレンス

MPS SDK for Java

スナップショットジョブの管理

MPS SDK for Python

スナップショットのキャプチャ

MPS SDK for PHP

スナップショットのキャプチャ

MPS SDK for PHP (更新バージョン)

スナップショットのキャプチャ

MPS SDK for Node.js

スナップショットのキャプチャ

MPS SDK for Go

スナップショットのキャプチャ

FAQ

詳細については、「スナップショットキャプチャに関する FAQ」をご参照ください。