ApsaraVideo Media Processing(MPS)のプリセットトランスコードテンプレートがビジネス要件を満たせない場合は、カスタムトランスコードテンプレートを作成し、エンコード形式、フレームレート、解像度など、テンプレートの設定を構成できます。このトピックでは、Java V2.0 用 MPS SDK を使用して、トランスコードテンプレートを作成、変更、削除、およびクエリする方法の例を示します。
前提条件
SDK クライアントが初期化されています。詳細については、「クライアントの初期化」をご参照ください。
トランスコードテンプレートの作成
AddTemplate オペレーションを呼び出して、トランスコードテンプレートを作成できます。
テンプレートの作成時にエラーメッセージ
The resource "Template" quota has been used upが報告された場合は、テンプレートのクォータが使い果たされています。チケットを提出して、より高いクォータを申請できます。作成したトランスコードテンプレートの返された ID を記録することをお勧めします。また、MPS コンソールでトランスコードテンプレートを作成し、その ID を取得することもできます。詳細については、「トランスコードテンプレート」をご参照ください。
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>説明</b> :
* <p>AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.mts20140618.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "mts.cn-qingdao.aliyuncs.com";
return new com.aliyun.mts20140618.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.mts20140618.Client client = Sample.createClient();
com.aliyun.mts20140618.models.AddTemplateRequest addTemplateRequest = new com.aliyun.mts20140618.models.AddTemplateRequest()
// テンプレートの名前。
.setName("mps-example")
// コンテナ形式。
.setContainer("{\"Format\":\"mp4\"}")
// ビデオストリームのトランスコード設定。
.setVideo("{\"Codec\":\"H.264\",\"Profile\":\"high\",\"Bitrate\":\"500\",\"Crf\":\"15\",\"Width\":\"256\",\"Height\":\"800\",\"Fps\":\"25\",\"Gop\":\"10s\"}")
// オーディオストリームのトランスコード設定。
.setAudio("{\"Codec\":\"H.264\",\"Samplerate\":\"44100\",\"Bitrate\":\"500\",\"Channels\":\"2\"}")
// 全般的なトランスコード設定。
.setTransConfig("{\"TransMode\":\"onepass\"}")
// セグメント設定。
.setMuxConfig("{\"Segment\":{\"Duration\":\"10\"}}");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 必要に応じて、API オペレーションのレスポンスを表示するための独自のコードを記述します。
client.addTemplateWithOptions(addTemplateRequest, runtime);
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}トランスコードテンプレートの設定を変更する
UpdateTemplate オペレーションを呼び出して、トランスコードテンプレートの設定を変更できます。
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>説明</b> :
* <p>AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.mts20140618.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "mts.cn-qingdao.aliyuncs.com";
return new com.aliyun.mts20140618.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.mts20140618.Client client = Sample.createClient();
com.aliyun.mts20140618.models.UpdateTemplateRequest updateTemplateRequest = new com.aliyun.mts20140618.models.UpdateTemplateRequest()
// テンプレートの ID。
.setTemplateId("16f01ad6175e4230ac42bb5182cd****")
// テンプレートの名前。
.setName("MPS-example")
// コンテナ形式。
.setContainer("{\"Format\":\"mp4\"}")
// ビデオストリームのトランスコード設定。
.setVideo("{\"Codec\":\"H.264\",\"Profile\":\"high\",\"Bitrate\":\"500\",\"Crf\":\"15\",\"Width\":\"256\",\"Height\":\"800\",\"Fps\":\"25\",\"Gop\":\"10\"}")
// オーディオストリームのトランスコード設定。
.setAudio("{\"Codec\":\"aac\",\"Samplerate\":\"44100\",\"Bitrate\":\"500\",\"Channels\":\"2\"}")
// トランスマックス設定。
.setMuxConfig("{\"Segment\":{\"Duration\":\"10\"}}")
// 全般的なトランスコード設定。
.setTransConfig("{\"TransMode\":\"onepass\"}");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 必要に応じて、API オペレーションのレスポンスを表示するための独自のコードを記述します。
client.updateTemplateWithOptions(updateTemplateRequest, runtime);
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}トランスコードテンプレートの削除
DeleteTemplate オペレーションを呼び出して、トランスコードテンプレートを削除できます。
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>説明</b> :
* <p>AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.mts20140618.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "mts.cn-qingdao.aliyuncs.com";
return new com.aliyun.mts20140618.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.mts20140618.Client client = Sample.createClient();
com.aliyun.mts20140618.models.DeleteTemplateRequest deleteTemplateRequest = new com.aliyun.mts20140618.models.DeleteTemplateRequest()
// 削除するトランスコードテンプレートの ID。
.setTemplateId("16f01ad6175e4230ac42bb5182cd****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 必要に応じて、API オペレーションのレスポンスを表示するための独自のコードを記述します。
client.deleteTemplateWithOptions(deleteTemplateRequest, runtime);
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}テンプレート ID に基づいてトランスコードテンプレートをクエリする
QueryTemplateList オペレーションを呼び出して、テンプレート ID に基づいてトランスコードテンプレートをクエリできます。
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>説明</b> :
* <p>AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.mts20140618.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "mts.cn-qingdao.aliyuncs.com";
return new com.aliyun.mts20140618.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.mts20140618.Client client = Sample.createClient();
com.aliyun.mts20140618.models.QueryTemplateListRequest queryTemplateListRequest = new com.aliyun.mts20140618.models.QueryTemplateListRequest()
// クエリするトランスコードテンプレートの ID。
.setTemplateIds("16f01ad6175e4230ac42bb5182cd****,88c6ca184c0e424d5w5b665e2a12****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 必要に応じて、API オペレーションのレスポンスを表示するための独自のコードを記述します。
client.queryTemplateListWithOptions(queryTemplateListRequest, runtime);
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}テンプレートステータスに基づいてトランスコードテンプレートをクエリする
SearchTemplate オペレーションを呼び出して、テンプレートステータスに基づいてトランスコードテンプレートをクエリできます。
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>説明</b> :
* <p>AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.mts20140618.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。 ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "mts.cn-qingdao.aliyuncs.com";
return new com.aliyun.mts20140618.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.mts20140618.Client client = Sample.createClient();
com.aliyun.mts20140618.models.SearchTemplateRequest searchTemplateRequest = new com.aliyun.mts20140618.models.SearchTemplateRequest()
// クエリするトランスコードテンプレートのステータス。
.setState("Normal")
// テンプレート名でテンプレートを検索するために使用されるプレフィックス。
.setNamePrefix("S00000001")
// 各ページに返すエントリの数。
.setPageSize(10L)
// 現在のページ番号。
.setPageNumber(1L);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 必要に応じて、API オペレーションのレスポンスを表示するための独自のコードを記述します。
client.searchTemplateWithOptions(searchTemplateRequest, runtime);
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。
// エラーメッセージ。
System.out.println(error.getMessage());
// 対応するエラー診断ページの URL。
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}