ApsaraVideo VOD を使用すると、メディアファイルからビデオスナップショットを生成できます。このプロセスを効率化するために、事前設定された設定を持つスナップショットテンプレートを作成し、コンソールまたは API を使用して管理できます。本記事では、さまざまな種類のビデオスナップショットを紹介し、その使用方法を説明するとともに、スナップショットテンプレートとパラメーターの管理に関する詳細を解説します。
概要
ビデオスナップショットは、ビデオの特定の時点からキャプチャされ、イメージファイルとして保存されるイメージです。使いやすさを向上させるために、ApsaraVideo VOD はスナップショットテンプレートを提供しています。テンプレートでスナップショットパラメーターを設定し、スナップショットジョブを送信するときにテンプレート ID を指定できます。
スナップショットの生成は、音声のみのメディアファイル、破損したソースファイル、またはコンテナ情報が異常なファイルの場合に失敗することがあります。
スナップショットプロセスは完全に非同期です。スナップショットリクエストを送信すると、API が応答を返した後でもジョブがキューに残っている場合があります。スナップショットの結果は、ビデオスナップショット完了イベント通知から取得できます。
スナップショットの生成に必要な時間は、ファイルサイズ、持続時間、フレームタイプによって異なります。
生成されたスナップショットの出力ディレクトリはカスタマイズできません。
スナップショットの種類
カバー スナップショット (CoverSnapshot)
ApsaraVideo VOD は、すべてのソースビデオに対して自動的にスナップショットを生成します。これらはカバー スナップショットと呼ばれます。デフォルトでは、ビデオの 5 ms 時点から開始し、等間隔のキーフレームで最大 8 枚のイメージがキャプチャされます。これらのカバー スナップショットは、ApsaraVideo VOD コンソールのビデオ詳細ページで表示でき、そのいずれかをビデオカバーとして選択できます。
ビデオのキーフレームが 8 未満の場合、生成されるスナップショットは 8 枚未満になります。
ビデオカバーが設定されていない場合、生成されたカバー スナップショットの中央のものがデフォルトのカバーとして使用されます。
ビデオを ApsaraVideo VOD にアップロードすると、サービスはカバー スナップショットとスプライトスナップショットを生成します。
通常スナップショット (NormalSnapshot)
API を使用して、ビデオから特定の数のイメージをキャプチャできます。このメソッドでは、開始時刻、スナップショットの総数、スナップショット間隔、幅、高さなどの設定を構成できます。同じビデオに対して複数のスナップショットジョブを送信した場合、ApsaraVideo VOD は最新のジョブのデータのみを保持します。詳細については、「メディアスナップショットジョブの送信」をご参照ください。
スプライトスナップショット (SpriteSnapshot)
スプライトは、まず一連の通常スナップショットを生成し、定義されたレイアウトに基づいてそれらを 1 つの大きなイメージに結合することで作成されます。この大きなイメージがスプライトであり、その作成に使用された個々のイメージはスプライトのオリジナルイメージと呼ばれます。スプライトを使用すると、イメージリクエストの数が減少します。これにより、クライアントは 1 回のリクエストで複数のスナップショットの情報をフェッチできるため、パフォーマンスが向上します。
たとえば、通常スナップショットを 10x10 のグリッドに配置すると、1 つのスプライトには理論上 10 × 10 = 100 個の小さいイメージを含めることができます。通常スナップショットの実際の数が 100 未満の場合、スプライトに含まれるイメージは少なくなります。数が 100 を超える場合は、2 番目のスプライトが生成され、以降も同様です。このプロセスを次の図に示します。
説明図の例では、合計 50 の通常スナップショットがあり、10×3 のグリッドに配置されています。最初のスプライトには 30 個の小さいイメージが含まれ、2 番目のスプライトには残りの 20 個が含まれます。
スプライトのオリジナルイメージ (SpriteOriginSnapshot)
スプライトのオリジナルイメージは、スプライトの作成に使用される通常スナップショットです。これらのオリジナルイメージを保持するか削除するかを選択できます。保持する場合、「スナップショットデータのクエリ」 API を使用してデータを取得できます。
WebVTT スナップショット
WebVTT スナップショットを生成すると、すべてのスナップショットに関する情報を含む VTT ファイルが作成されます。VTT ファイルには、各スナップショットのタイムスタンプや URL などの基本情報が記録されます。サムネイルを表示するには、アプリケーションでまず VTT ファイルを解析してこの情報を取得する必要があります。これは一般的に、プレーヤーのシークバーにプレビューサムネイルを表示するために使用されます。
WebVTT スナップショットのストレージオプション
個別イメージストレージ
各スナップショットは個別のイメージファイルとして保存されます。VTT ファイルには、次の図に示すように、個々のスナップショットの相対位置とタイムスタンプが記録されます。

結合イメージストレージ
すべてのスナップショットは、まず 1 つの大きなイメージ (スプライト) に結合されます。特定のスナップショットにアクセスするには、次の図に示すように、VTT ファイルからその座標を解析する必要があります。

使用方法
カバー スナップショット
ビデオがアップロードされると、ApsaraVideo VOD は自動的にカバー スナップショットを生成します。このプロセスは無料です。
API によって開始されるスナップショット
「メディアスナップショットジョブの送信」 API を呼び出すことで、特定のビデオのスナップショットタスクを開始できます。このメソッドは、通常スナップショットとスプライトスナップショットの両方を生成するために使用できます。
スナップショットの取得方法
スナップショット情報は、次の方法で取得できます。
ビデオスナップショット完了のコールバック通知を受信します。
GetVideoInfo API を呼び出して、デフォルトのスナップショット情報を取得します。
スナップショットデータのクエリ API を呼び出して、スナップショットデータをクエリします。
スナップショットの削除方法
現在、ApsaraVideo VOD は、ソースビデオとは独立してスナップショットを管理することをサポートしていません。ビデオを削除すると、関連するすべてのスナップショット情報とイメージファイルも完全に削除されます。この操作は元に戻せません。
スナップショットテンプレートの管理
スナップショットジョブには多くのパラメーターが含まれる場合があります。ジョブごとにこれらのパラメーターを指定するのは複雑で、エラーが発生しやすくなります。これを簡素化するために、ApsaraVideo VOD はスナップショットテンプレートを提供しています。テンプレートでパラメーターを設定し、スナップショットジョブを送信するときにテンプレート ID を指定できます。
スナップショットテンプレートは、コンソールまたは API を使用して管理できます。
コンソールによる管理
ApsaraVideo VOD コンソールでスナップショットテンプレートを追加、変更、削除できます。

API による管理
関連する API を呼び出してテンプレートを管理することもできます。詳細については、「スナップショットテンプレート」をご参照ください。
スナップショットパラメーター
通常スナップショットの設定
説明このセクションでは、通常スナップショットの主要なパラメーターについて説明します。パラメーターの完全なリストについては、「SnapshotConfig」をご参照ください。
API パラメーター
コンソールパラメーター
説明
FrameType
フレームタイプ
キャプチャするフレームタイプ。有効値は `intra` (キーフレーム) と `normal` (非キーフレーム) です。
通常、キーフレームのキャプチャは非キーフレームのキャプチャよりも高速です。
SpecifiedOffsetTime
開始時刻
スナップショットをキャプチャする開始時刻 (ミリ秒単位)。正の整数である必要があります。
単一フレームのスクリーンショットの場合、
SpecifiedOffsetTimeはスクリーンショットが撮影される時点です。Count
スナップショット数
生成するスナップショットの総数。
Interval
スナップショット間隔
スナップショット間の時間間隔。
Count> 1:指定された間隔で合計Count個のスナップショットをキャプチャします。Count> 1 かつInterval= 0:ビデオの持続時間全体にわたって等間隔にCount個のスナップショットをキャプチャします。FrameTypeがintraで、キーフレームの数がCount未満の場合、実際に生成されるスナップショットの数はCount未満になります。Count= 1:単一のスナップショットをキャプチャします。
Width
幅
スナップショットの幅 (ピクセル単位)。値は 8 から 4096 の範囲 (両端を含む) である必要があります。
説明WidthとHeightに関する注意:幅と高さを指定しない場合、スナップショットは入力ビデオと同じディメンションになります。
幅または高さのみを指定した場合、もう一方のディメンションは入力ビデオの元の縦横比を維持するようにスケーリングされます。
Height
高さ
スナップショットの高さ (ピクセル単位)。値は 8 から 4096 の範囲 (両端を含む) である必要があります。
WebVTT スナップショットの設定
通常スナップショットに必要なパラメーターに加えて、
FormatとSubOutも設定する必要があります。API パラメーター
コンソールパラメーター
説明
Format
ファイル形式
このパラメーターは、スナップショットにインデックスを付ける VTT ファイルが生成されることを指定します。
説明このパラメーターは WebVTT スナップショットにのみ必須で、その値は `VTT` である必要があります。
SubOut
このパラメーターは WebVTT スナップショットにのみ必須です。
例:
{ "IsSptFrag":"true" }IsSptFrag:VTT ファイルのスナップショットイメージの生成方法を制御します。イメージを個別に保存するには `false` に設定します。イメージを 1 つの大きなイメージ (スプライト) に結合するには `true` に設定します。スプライトスナップショットの設定
説明このセクションでは、スプライトスナップショットの主要なパラメーターについて説明します。パラメーターの完全なリストについては、「SpriteSnapshotConfig」をご参照ください。
API パラメーター
コンソールパラメーター
説明
CellWidth
小さいイメージの幅
スプライト内の小さいイメージの幅と高さ。これらのパラメーターを設定しない場合、小さいイメージは通常スナップショットと同じディメンションになります。一方のディメンションのみを指定した場合、もう一方は縦横比を維持するように自動的にスケーリングされます。
CellHeight
小さいイメージの高さ
KeepCellPic
オリジナルイメージの削除
スプライトのオリジナルイメージ (スプライトの作成に使用された通常スナップショット) を保持するかどうかを指定します。有効値は `delete` (保持しない) と `keep` (保持する) です。
説明必要でない限り、オリジナルイメージを削除することを推奨します。
Color
背景色
スプライトの背景色。詳細については、「色の設定」をご参照ください。
説明RGB 値はサポートされていません。
次の図は、これらのパラメーターを示しています。
