スナップショットテンプレートは、ビデオスナップショットのサイズ、数、タイミングを定義します。このトピックでは、スナップショットテンプレートを作成および管理するための ApsaraVideo VOD SDK for Java のサンプルコードを紹介します。
注意事項
このトピックに記載されているすべての API 呼び出しのサンプルコードでは、AccessKey を使用してクライアントインスタンスを初期化しています。
これらの API オペレーションのリクエストパラメーターおよびレスポンスパラメーターの詳細については、「Alibaba Cloud OpenAPI Explorer」をご参照ください。API オペレーションページで右側の API Documentations タブを開いてください。
このトピックでは一部の API オペレーションについてサンプルコードを提供しています。その他の API オペレーションの SDK コード例を取得するには、「Alibaba Cloud OpenAPI Explorer」にアクセスしてください。Parameters タブで必要なパラメーターを指定し、呼び出しを実行します。その後、SDK Sample Code タブで SDK バージョンとターゲット言語を選択すると、サンプルコードを表示およびダウンロードできます。
このトピックのサンプルコードは SDK V1.0 を使用しています。V2.0 のサンプルコードを取得する場合は、Alibaba Cloud OpenAPI Explorer で正しい SDK バージョンを選択してください。

クライアントの初期化
ApsaraVideo VOD SDK を使用する前に、「初期化」に従ってクライアントを初期化してください。
スナップショットテンプレートの作成
AddVodTemplate オペレーションを呼び出して、スナップショットテンプレートを作成します。
Alibaba Cloud OpenAPI Portal:AddVodTemplate。
サンプルコード:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.AddVodTemplateRequest;
import com.aliyuncs.vod.model.v20170321.AddVodTemplateResponse;
/**
* AccessKey 情報を取得します。
*/
public static DefaultAcsClient initVodClient() throws ClientException {
// ApsaraVideo VOD が有効になっているリージョンを指定します。
String regionId = "cn-shanghai";
// Alibaba Cloud アカウント (root ユーザー) の AccessKey ペアは、すべての API オペレーションに対する権限を持ちます。API オペレーションの呼び出しや日常的な運用管理 (O&M) には RAM ユーザーを使用することを推奨します。
// AccessKey ペア (AccessKey ID および AccessKey Secret) をプロジェクトコード内に保存しないでください。そうしないと、AccessKey ペアが漏洩する可能性があり、結果としてご利用のアカウント内のすべてのリソースのセキュリティが侵害されます。
// この例では、環境変数から AccessKey ペアを読み取ることで API アクセスの認証を実装しています。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* スナップショットテンプレートのパラメーターを構築し、必要に応じて対応するパラメーター値を変更します。
* 以下のサンプルコードは、イメージスプライトの完全な構成を示しています。
* @return スナップショットテンプレートの構成。
*/
public static JSONObject buildSnapshotTemplateConfig() {
JSONObject templateConfig = new JSONObject();
JSONObject snapshotConfig = new JSONObject();
snapshotConfig.put("Count", "50");
snapshotConfig.put("Interval", "1");
snapshotConfig.put("SpecifiedOffsetTime", "0");
snapshotConfig.put("Width", "200");
snapshotConfig.put("Height", "200");
snapshotConfig.put("FrameType", "normal");
// 通常スナップショットの構成。デフォルトでは、イメージスプライトにもこの構成が使用されます。
templateConfig.put("SnapshotConfig", snapshotConfig);
// イメージスプライトの構成。通常スナップショットの構成を含みます。
JSONObject spriteSnapshotConfig = new JSONObject();
spriteSnapshotConfig.put("CellWidth", "120");
spriteSnapshotConfig.put("CellHeight", "68");
spriteSnapshotConfig.put("Columns", "3");
spriteSnapshotConfig.put("Lines", "10");
spriteSnapshotConfig.put("Padding", "20");
spriteSnapshotConfig.put("Margin", "50");
spriteSnapshotConfig.put("KeepCellPic", "keep");
spriteSnapshotConfig.put("Color", "tomato");
snapshotConfig.put("SpriteSnapshotConfig", spriteSnapshotConfig);
// スナップショットのタイプ。イメージスプライトの場合は SpriteSnapshot、通常スナップショットの場合は NormalSnapshot を設定します。
templateConfig.put("SnapshotType", "SpriteSnapshot");
return templateConfig;
}
/**
* スナップショットテンプレートを追加する関数。
*/
public static AddVodTemplateResponse addSnapshotVodTemplate(DefaultAcsClient client) throws Exception {
AddVodTemplateRequest request = new AddVodTemplateRequest();
// テンプレートの名前。
request.setName("Test to add a snapshot template");
// テンプレートのタイプ。Snapshot を設定します。
request.setTemplateType("Snapshot");
// テンプレートの構成。
JSONObject templateConfig = buildSnapshotTemplateConfig();
request.setTemplateConfig(templateConfig.toJSONString());
return client.getAcsResponse(request);
}
/**
* サンプルコード
* @param args
* @throws ClientException
*/
public static void main(String[] args) {
DefaultAcsClient client = initVodClient();
AddVodTemplateResponse response = new AddVodTemplateResponse();
try {
// スナップショットテンプレートを作成します。
response = addSnapshotVodTemplate(client);
// スナップショットテンプレートの ID。
System.out.println("SnapshotVodTemplateId = " + response.getVodTemplateId());
} catch (Exception e) {
System.out.println("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.println("RequestId = " + response.getRequestId());
}
スナップショットテンプレートの変更
UpdateVodTemplate オペレーションを呼び出して、スナップショットテンプレートを変更します。
Alibaba Cloud OpenAPI Portal: UpdateVodTemplate。
サンプルコード:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.UpdateVodTemplateRequest;
import com.aliyuncs.vod.model.v20170321.UpdateVodTemplateResponse;
/**
* AccessKey 情報を取得します。
*/
public static DefaultAcsClient initVodClient() throws ClientException {
// ApsaraVideo VOD が有効になっているリージョンを指定します。
String regionId = "cn-shanghai";
// Alibaba Cloud アカウント (root ユーザー) の AccessKey ペアは、すべての API オペレーションに対する権限を持ちます。API オペレーションの呼び出しや日常的な運用管理 (O&M) には RAM ユーザーを使用することを推奨します。
// AccessKey ペア (AccessKey ID および AccessKey Secret) をプロジェクトコード内に保存しないでください。そうしないと、AccessKey ペアが漏洩する可能性があり、結果としてご利用のアカウント内のすべてのリソースのセキュリティが侵害されます。
// この例では、環境変数から AccessKey ペアを読み取ることで API アクセスの認証を実装しています。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* スナップショットテンプレートのパラメーターを構築し、必要に応じて対応するパラメーター値を変更します。
* 以下のサンプルコードは、通常スナップショットの完全な構成を示しています。
* @return スナップショットテンプレートの構成。
*/
public static JSONObject buildSnapshotTemplateConfig() {
JSONObject templateConfig = new JSONObject();
JSONObject snapshotConfig = new JSONObject();
snapshotConfig.put("Count", "50");
snapshotConfig.put("Interval", "1");
snapshotConfig.put("SpecifiedOffsetTime", "0");
snapshotConfig.put("Width", "200");
snapshotConfig.put("Height", "200");
snapshotConfig.put("FrameType", "normal");
// 通常スナップショットの構成。デフォルトでは、イメージスプライトにもこの構成が使用されます。
templateConfig.put("SnapshotConfig", snapshotConfig);
// スナップショットのタイプ。イメージスプライトの場合は SpriteSnapshot、通常スナップショットの場合は NormalSnapshot を設定します。
templateConfig.put("SnapshotType", "NormalSnapshot");
return templateConfig;
}
/**
* スナップショットテンプレートを変更します。
*/
public static UpdateVodTemplateResponse updateSnapshotVodTemplate(DefaultAcsClient client) throws Exception {
UpdateVodTemplateRequest request = new UpdateVodTemplateRequest();
// 変更するテンプレートの ID。
request.setVodTemplateId("53azf9d796fad9d7b862b2e****");
// テンプレートの名前。
request.setName("Test to modify a snapshot template");
// テンプレートの構成。
JSONObject templateConfig = buildSnapshotTemplateConfig();
request.setTemplateConfig(templateConfig.toJSONString());
return client.getAcsResponse(request);
}
/**
* サンプルコード
* @param args
* @throws ClientException
*/
public static void main(String[] args) {
DefaultAcsClient client = initVodClient();
UpdateVodTemplateResponse response = new UpdateVodTemplateResponse();
try {
// スナップショットテンプレートを変更します。
response = updateSnapshotVodTemplate(client);
// スナップショットテンプレートの ID。
System.out.println("SnapshotVodTemplateId = " + response.getVodTemplateId());
} catch (Exception e) {
System.out.println("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.println("RequestId = " + response.getRequestId());
}
スナップショットテンプレートの照会
-
GetVodTemplate オペレーションを呼び出して、スナップショットテンプレートを照会します。
Alibaba Cloud OpenAPI Portal:GetVodTemplate。
-
ListVodTemplate オペレーションを呼び出して、スナップショットテンプレートの一覧を照会します。
Alibaba Cloud OpenAPI Portal:ListVodTemplate。
スナップショットテンプレートの削除
DeleteVodTemplate オペレーションを呼び出して、スナップショットテンプレートを削除します。
Alibaba Cloud OpenAPI Portal: DeleteVodTemplate。