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

ApsaraVideo VOD:スナップショットテンプレート

最終更新日:Feb 28, 2026

ApsaraVideo VOD SDK for Python を使用してスナップショットテンプレートを管理します。このページの例では、aliyunsdkvod パッケージを使用して、スナップショットテンプレートの作成、変更、クエリ、削除を行います。

前提条件

開始する前に、以下のものが揃っていることを確認してください:

  • Python 3.x がインストールされていること

  • aliyunsdkvod パッケージがインストールされていること

  • ApsaraVideo VOD の権限を持つ AccessKey ペア

  • 初期化された VOD クライアント。詳細については、「初期化」をご参照ください。

このページのすべての例では、init_vod_client() を呼び出してクライアントを初期化します。実装については、上記の初期化ガイドをご参照ください。

注意事項

  • すべての例では、AccessKey ペアを使用して認証します。

  • リクエストおよびレスポンスパラメーターの詳細については、OpenAPI Explorer の API リファレンスをご参照ください。詳細は、上部のナビゲーションバーにある [API ドキュメント] をクリックしてください。

  • 他の API 操作のサンプルコードを取得するには、OpenAPI Explorer を開き、左側のナビゲーションウィンドウで操作を選択し、[パラメーター] タブでパラメーターを指定し、[呼び出しの開始] をクリックして、[SDK サンプルコード] タブからコードをダウンロードします。

スナップショット構成パラメーター

作成と変更の例では、同じ構成構造を共有します。以下の表で各パラメーターについて説明します。

SnapshotConfig

パラメータータイプ必須説明
CountLongはいキャプチャするスナップショットの数。50
IntervalLongはいスナップショットをキャプチャする間隔 (秒単位)。値が 0 の場合、ビデオのデュレーションと Count の値に基づいて、等間隔でスナップショットがキャプチャされることを示します。1
SpecifiedOffsetTimeLongはいスナップショットのキャプチャを開始する時刻 (ミリ秒単位)。0
WidthIntegerいいえスナップショットの幅 (ピクセル単位)。有効な値:[8, 4096]。デフォルト値:ソースビデオの幅。200
HeightIntegerいいえスナップショットの高さ (ピクセル単位)。有効な値:[8, 4096]。デフォルト値:ソースビデオの高さ。200
FrameTypeStringはいスナップショットのフレームタイプ。有効な値:intra (キーフレーム)、normal (通常フレーム)。"normal"

TemplateConfig

パラメータータイプ説明有効な値
SnapshotConfigObjectスナップショット構成オブジェクト。上記の表をご参照ください
SnapshotTypeStringスナップショットタイプ。NormalSnapshotSpriteSnapshot

SpriteSnapshotConfig (オプション)

スプライトスナップショットテンプレートを作成するには、SnapshotConfig 内に SpriteSnapshotConfig を追加し、SnapshotTypeSpriteSnapshot に設定します。

パラメータータイプ必須説明
CellWidthStringいいえスプライト内の各小画像の幅 (ピクセル単位)。デフォルト値:通常のスナップショットの幅。"120"
CellHeightStringいいえスプライト内の各小画像の高さ (ピクセル単位)。デフォルト値:通常のスナップショットの高さ。"68"
ColumnsStringはい小画像の列数。有効な値:[1, 10000]。"3"
LinesStringはい小画像の行数。有効な値:[1, 10000]。"10"
PaddingStringはい各小画像のパディング (ピクセル単位)。"20"
MarginStringはい各小画像のマージン (ピクセル単位)。"50"
KeepCellPicStringはい個々のセル画像を保持するかどうかを指定します。有効な値:keep (保持)、delete (削除)。"keep"
ColorStringはいスプライトイメージの背景色です。詳細については、「色の設定」をご参照ください。RGB 値を使用した色の設定はサポートされていません。"tomato"

スナップショットテンプレートの作成

AddVodTemplate を呼び出してスナップショットテンプレートを作成します。TemplateTypeSnapshot に設定します。

API の詳細については、「AddVodTemplate」をご参照ください。

通常のスナップショットテンプレート

from aliyunsdkvod.request.v20170321 import AddVodTemplateRequest
import json
import traceback

def add_vod_template(clt):
    request = AddVodTemplateRequest.AddVodTemplateRequest()
    # テンプレート名
    request.set_Name('Sample Snapshot Template')
    # テンプレートタイプ:「Snapshot」である必要があります
    request.set_TemplateType('Snapshot')

    # スナップショット構成
    snapshotConfig = {'Count': 50, 'Interval': 1, 'SpecifiedOffsetTime': 0, 'Width': 200, 'Height': 200,
                      'FrameType': 'normal'}
    templateConfig = {'SnapshotConfig': snapshotConfig, 'SnapshotType': 'NormalSnapshot'}

    request.set_TemplateConfig(json.dumps(templateConfig))

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    template = add_vod_template(clt)
    # レスポンスにはテンプレート ID が含まれます
    print(template['VodTemplateId'])
    print(json.dumps(template, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

スプライトスナップショットテンプレート

スプライトスナップショットテンプレートを作成するには、スナップショット構成に SpriteSnapshotConfig を追加し、SnapshotTypeSpriteSnapshot に設定します:

# スプライトスナップショット構成 (通常のスナップショット構成を含む)
snapshotConfig = {'Count': 50, 'Interval': 1, 'SpecifiedOffsetTime': 0, 'Width': 200, 'Height': 200,
                  'FrameType': 'normal'}

# スプライト固有の設定を追加
spriteSnapshotConfig = {'CellWidth': 120, 'CellHeight': 68, 'Columns': 3, 'Lines': 10, 'Padding': 20,
                        'Margin': 50, 'KeepCellPic': 'keep', 'Color': 'tomato'}
snapshotConfig['SpriteSnapshotConfig'] = spriteSnapshotConfig

templateConfig = {'SnapshotConfig': snapshotConfig, 'SnapshotType': 'SpriteSnapshot'}

上記のスプライトスナップショットテンプレートを作成するには、通常のスナップショットの例にある snapshotConfigtemplateConfig 変数を置き換えます。

スナップショットテンプレートの変更

UpdateVodTemplate を呼び出して、既存のスナップショットテンプレートを更新します。VodTemplateId でテンプレート ID を指定します。

API の詳細については、「UpdateVodTemplate」をご参照ください。

from aliyunsdkvod.request.v20170321 import UpdateVodTemplateRequest
import json
import traceback

def update_vod_template(clt):
    request = UpdateVodTemplateRequest.UpdateVodTemplateRequest()
    # 更新するテンプレートを指定
    request.set_VodTemplateId('<templateId>')
    # テンプレート名を更新
    request.set_Name('New Snapshot Template Name')
    # スナップショット構成を更新
    snapshotConfig = {'Count': 50, 'Interval': 1, 'SpecifiedOffsetTime': 0, 'Width': 200, 'Height': 200,
                      'FrameType': 'normal'}
    templateConfig = {'SnapshotConfig': snapshotConfig, 'SnapshotType': 'NormalSnapshot'}
    request.set_TemplateConfig(json.dumps(templateConfig))

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    template = update_vod_template(clt)
    print(json.dumps(template, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

テンプレート作成時に返された実際のテンプレート ID で <templateId> を置き換えてください。

スナップショットテンプレートのクエリ

ApsaraVideo VOD は、2 つのクエリオペレーションを提供します:

  • GetVodTemplate:ID で単一のテンプレートを取得します。「GetVodTemplate」をご参照ください。

  • ListVodTemplate:指定されたタイプのすべてのテンプレートをリストします。「ListVodTemplate」をご参照ください。

単一テンプレートのクエリ

from aliyunsdkvod.request.v20170321 import GetVodTemplateRequest
import json
import traceback

def get_vod_template(clt):
    request = GetVodTemplateRequest.GetVodTemplateRequest()
    request.set_VodTemplateId('<templateId>')

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    template = get_vod_template(clt)
    print(json.dumps(template, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

すべてのスナップショットテンプレートのリスト

from aliyunsdkvod.request.v20170321 import ListVodTemplateRequest
import json
import traceback

def list_vod_template(clt):
    request = ListVodTemplateRequest.ListVodTemplateRequest()
    # テンプレートタイプでフィルタリング
    request.set_TemplateType('Snapshot')

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    templates = list_vod_template(clt)
    print(json.dumps(templates, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

スナップショットテンプレートの削除

DeleteVodTemplate を呼び出して、ID でスナップショットテンプレートを削除します。

API の詳細については、「DeleteVodTemplate」をご参照ください。

from aliyunsdkvod.request.v20170321 import DeleteVodTemplateRequest
import json
import traceback

def delete_vod_template(clt):
    request = DeleteVodTemplateRequest.DeleteVodTemplateRequest()
    request.set_VodTemplateId('<templateId>')

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    result = delete_vod_template(clt)
    print(json.dumps(result, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

関連ドキュメント