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
| パラメーター | タイプ | 必須 | 説明 | 例 |
|---|---|---|---|---|
Count | Long | はい | キャプチャするスナップショットの数。 | 50 |
Interval | Long | はい | スナップショットをキャプチャする間隔 (秒単位)。値が 0 の場合、ビデオのデュレーションと Count の値に基づいて、等間隔でスナップショットがキャプチャされることを示します。 | 1 |
SpecifiedOffsetTime | Long | はい | スナップショットのキャプチャを開始する時刻 (ミリ秒単位)。 | 0 |
Width | Integer | いいえ | スナップショットの幅 (ピクセル単位)。有効な値:[8, 4096]。デフォルト値:ソースビデオの幅。 | 200 |
Height | Integer | いいえ | スナップショットの高さ (ピクセル単位)。有効な値:[8, 4096]。デフォルト値:ソースビデオの高さ。 | 200 |
FrameType | String | はい | スナップショットのフレームタイプ。有効な値:intra (キーフレーム)、normal (通常フレーム)。 | "normal" |
TemplateConfig
| パラメーター | タイプ | 説明 | 有効な値 |
|---|---|---|---|
SnapshotConfig | Object | スナップショット構成オブジェクト。 | 上記の表をご参照ください |
SnapshotType | String | スナップショットタイプ。 | NormalSnapshot、SpriteSnapshot |
SpriteSnapshotConfig (オプション)
スプライトスナップショットテンプレートを作成するには、SnapshotConfig 内に SpriteSnapshotConfig を追加し、SnapshotType を SpriteSnapshot に設定します。
| パラメーター | タイプ | 必須 | 説明 | 例 |
|---|---|---|---|---|
CellWidth | String | いいえ | スプライト内の各小画像の幅 (ピクセル単位)。デフォルト値:通常のスナップショットの幅。 | "120" |
CellHeight | String | いいえ | スプライト内の各小画像の高さ (ピクセル単位)。デフォルト値:通常のスナップショットの高さ。 | "68" |
Columns | String | はい | 小画像の列数。有効な値:[1, 10000]。 | "3" |
Lines | String | はい | 小画像の行数。有効な値:[1, 10000]。 | "10" |
Padding | String | はい | 各小画像のパディング (ピクセル単位)。 | "20" |
Margin | String | はい | 各小画像のマージン (ピクセル単位)。 | "50" |
KeepCellPic | String | はい | 個々のセル画像を保持するかどうかを指定します。有効な値:keep (保持)、delete (削除)。 | "keep" |
Color | String | はい | スプライトイメージの背景色です。詳細については、「色の設定」をご参照ください。RGB 値を使用した色の設定はサポートされていません。 | "tomato" |
スナップショットテンプレートの作成
AddVodTemplate を呼び出してスナップショットテンプレートを作成します。TemplateType を Snapshot に設定します。
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 を追加し、SnapshotType を SpriteSnapshot に設定します:
# スプライトスナップショット構成 (通常のスナップショット構成を含む)
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'}上記のスプライトスナップショットテンプレートを作成するには、通常のスナップショットの例にある snapshotConfig と templateConfig 変数を置き換えます。
スナップショットテンプレートの変更
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())関連ドキュメント
初期化:VOD クライアントのセットアップ
OpenAPI Explorer:他の ApsaraVideo VOD API 操作の参照とテスト
メディア処理のパラメーター: スナップショットテンプレートのパラメーターに関する詳細な説明