このトピックでは、メディア処理モジュールのAPI操作の使用例を示します。 API操作は、ApsaraVideo VOD SDK for Javaにカプセル化されています。 API操作を呼び出して、プロダクションスタジオでトランスコードおよびスナップショットジョブの送信、スナップショットデータの照会、およびビデオの前処理を行うことができます。
クライアントを初期化
SDKを使用する前に、クライアントを初期化してください。 詳細については、「初期化」をご参照ください。
コード変換ジョブの送信
You can call the SubmitTranscodeJobs operation to submit a transcoding job.
For more information about the request and response parameters of this operation, see SubmitTranscodeJobs. 例:
com.aliyuncs.vod.mo del.v20170321.SubmitTranscodeJobsRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.SubmitTranscodeJobsResponseをインポートします。/**
* トランスコードジョブを送信します。
* /
public static SubmitTranscodeJobsResponse submitTranscodeJobs(DefaultAcsClientクライアント) throws Exception {
SubmitTranscodeJobsRequest request=新しいSubmitTranscodeJobsRequest();
// トランスコードするビデオのID。
request.setVideoId("34a6ca54f5c140eece85a289 ****");
// トランスコードテンプレートのID。
request.setTemplateGroupId("e8aa925a9798c630d30cd ****");
// 透かしを置き換えるために必要なパラメーターを作成します。 これらのパラメーターは、透かしを置き換える場合にのみ作成する必要があります。
JSONObject overrideParams = buildOverrideParams();
// オーバーライドするパラメーター。 一部の透かし関連パラメータの値を変更できます。 これらのパラメーターは、透かしを置き換える場合にのみ指定する必要があります。
request.setOverrideParams(overrideParams.toJSONString());
// 標準の暗号化に必要な設定パラメーターを作成します。 これらのパラメーターは、標準暗号化にのみ作成する必要があります。
JSONObject encryptConfig = buildEncryptConfig (クライアント);
// HLS標準暗号化の設定。 これらのパラメーターは、標準暗号化にのみ指定する必要があります。
request.setEncryptConfig(encryptConfig.toJSONString());
return client.getAcsResponse (リクエスト);
}
/**
* 呼び出し例
* /
public static void main(String[] args) throws ClientException {
DefaultAcsClient client = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
SubmitTranscodeJobsResponse応答=新しいSubmitTranscodeJobsResponse();
try {
response = submitTranscodeJobs (クライアント);
// タスクID。
System.out.println("JobId = " + response.getTranscodeJobs().get(0).getJobId());
} catch (Exception e) {
System.out.println("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.println("RequestId = " + response.getRequestId());
}
/**
* HTTPライブストリーミング (HLS) 暗号化の設定を構築します。
* @return
* @throws ClientException
* /
public static JSONObject buildEncryptConfig(DefaultAcsClientクライアント) throws ClientException {
// ApsaraVideo VODによって提供されるサービスキー。 サービスキーを表示するには、キーが存在するリージョンを選択し、KMSコンソールで説明がvodであるキーを見つける必要があります。
String serviceKey = "<Your Service Key>";
// 暗号化用のデータキーを作成します。 レスポンスには、データキーの平文と暗号文が含まれます。
// 標準ビデオ暗号化用のデータキーの暗号文のみを転送します。
// 注: KMSクライアントを個別に初期化して、適切なリージョンでKMS操作を呼び出すことをお勧めします。 詳細については、「初期化」トピックを参照して、正しいリージョンを指定してください。
GenerateDataKeyResponseレスポンス=generateDataKey (クライアント、serviceKey);
JSONObject encryptConfig = new JSONObject();
// The URI of the operation that is used to decrypt the data key. URIを取得するには、復号化サービスのURLとデータキーの暗号文を連結します。 解読する暗号文はビデオによって異なります。
// Ciphertextパラメーターの名前をカスタマイズできます。 The name in this example is only for reference.
encryptConfig.put("DecryptKeyUri" 、"http://example.aliyundoc.com/decrypt?" +
"Ciphertext=" + response.getCiphertextBlob();
// キーサービスのタイプ。 値をKMSに設定します。
encryptConfig.put("KeyServiceType" 、"KMS");
// データキーの暗号文。
encryptConfig.put("CipherText", response.getCiphertextBlob());
encryptConfigを返します。}
/**
* 1. Build overriding parameters, which override only the file URL of an image watermark or the content of a text watermark.
* 2. 透かしのIDが、使用するトランスコードテンプレートのIDと関連付けられていることを確認します。 トランスコードテンプレートのIDは、TranscodeTemplateIdで指定します。
* 3. You can call this operation to add only a watermark whose ID is associated with the ID of the transcoding template that you use.
* 注: 透かしファイルとビデオは同じオリジンサーバーに保存する必要があります。
* @return
*/
public static JSONObject buildOverrideParams() {
JSONObject overrideParams = new JSONObject();
JSONArray watermarks = new JSONArray();
// 画像透かしのファイルURLをオーバーライドします。
JSONObject watermark1 = new JSONObject();
// イメージをオーバーライドする透かしのID。 The ID must be associated with the transcoding template.
watermark1.put("WatermarkId", "2ea587477c5a1bc8b57****");
// OSSバケットに保存されている新しいイメージのファイルURL。 The new image and the video must be stored on the same origin server.
watermark1.put("FileUrl", "https:192.168.0.0/16");
// テキスト透かしの内容を上書きします。
JSONObject watermark2 = new JSONObject();
// The ID of the watermark whose content you want to override. The ID must be associated with the transcoding template.
watermark2.put("WatermarkId", "d297ba31ac5242d207****");
// The new content of the watermark.
watermark2.put("Content", "User ID:6****");
watermarks.add(watermark2);
overrideParams.put("透かし" 、透かし);
return overrideParams;
}
/**
* 暗号化用のデータキーを作成します。 レスポンスには、データキーの平文と暗号文が含まれます。 暗号文をApsaraVideo VODに転送するだけで済みます。
* 注: KeySpecパラメーターの値をAES_128に設定する必要があります。 NumberOfBytesパラメーターはサポートされていません。
* @ paramクライアントKMS SDKのクライアント。
* @ param serviceKey // The service key that is provided by ApsaraVideo VOD to generate data keys. このサービスキーの説明は、key Management service (KMS) コンソールのvodです。
* @return
* @throws ClientException
* /
パブリック静的GenerateDataKeyResponse generateDataKey(DefaultAcsClientクライアント、文字列serviceKey) はClientException {をスローします
GenerateDataKeyRequest request = new GenerateDataKeyRequest();
request.setKeyId(serviceKey);
request.setKeySpec("AES_128");
return client.getAcsResponse (リクエスト);
}
スナップショットジョブを送信する
SubmitSnapshotJob操作を呼び出して、スナップショットジョブを送信できます。
com.aliyuncs.vod.mo del.v20170321.SubmitSnapshotJobRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.SubmitSnapshotJobResponseをインポートします。/**
* スナップショットジョブを送信します。
* /
パブリック静的SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClientクライアント) が例外 {をスローします
SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
// スナップショットを作成するビデオのID。 スナップショットテンプレートのIDを使用することを推奨します。
request.setVideoId("4d237a8270084849bf4207876181 ****");
// スナップショットテンプレートのID。
request.setSnapshotTemplateId("5d745e6b8baadf589e0702426cfc6****");
// SnapshotTemplateIdパラメーターを指定した場合、次のパラメーターは無視されます。
request.setCount(50L);
request.setSpecifiedOffsetTime(0L);
request.setInterval(1L);
request.setWidth("200");
request.setHeight("200");
JSONObject spriteSnapshotConfig = buildSnapshotTemplateConfig();
request.setSpriteSnapshotConfig(spriteSnapshotConfig.toJSONString());
return client.getAcsResponse (リクエスト);
}
/**
* イメージスプライトスナップショットの設定を作成します。
* @return
* /
public static JSONObject buildSnapshotTemplateConfig() {
JSONObject spriteSnapshotConfig = new JSONObject();
spriteSnapshotConfig.put("CellWidth" 、"120");
spriteSnapshotConfig.put("CellHeight" 、"68");
spriteSnapshotConfig.put("列" 、"3");
spriteSnapshotConfig.put("Lines" 、"10");
spriteSnapshotConfig.put("Padding", "20");
spriteSnapshotConfig.put("マージン" 、"50");
// イメージスプライトの生成後にソースイメージを保持するかどうか。
spriteSnapshotConfig.put("KeepCellPic" 、"keep");
spriteSnapshotConfig.put("Color", "tomato");
spriteSnapshotConfigを返します。}
/**
* 呼び出し例
* /
public static void main(String[] args) throws ClientException {
DefaultAcsClient client = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
SubmitSnapshotJobResponseレスポンス=新しいSubmitSnapshotJobResponse();
try {
response = submitSnapshotJob(client);
// タスクID。
System.out.println("JobId = " + response.getSnapshotJob().getJobId());
} catch (Exception e) {
System.out.println("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.println("RequestId = " + response.getRequestId());
}
スナップショットデータの照会
ListSnapshots操作を呼び出して、スナップショットデータを照会できます。
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「ListSnapshots」をご参照ください。 例:
com.aliyuncs.vod.mo del.v20170321.ListSnapshotsRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.ListSnapshotsResponseをインポートします。/**
* スナップショットデータを照会します。
* /
public static ListSnapshotsResponse listSnapshots(DefaultAcsClientクライアント) throws Exception {
ListSnapshotsRequest request = new ListSnapshotsRequest();
// ビデオID。
request.setVideoId("c86c0ceba9796535 ****");
// スナップショットの種類。
request.setSnapshotType("CoverSnapshot");
request.setPageNo("1");
request.setPageSize("20");
return client.getAcsResponse (リクエスト);
}
/**
* 呼び出し例
* /
public static void main(String[] args) throws ClientException {
DefaultAcsClient client = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
ListSnapshotsResponseレスポンス=new ListSnapshotsResponse();
try {
response = listSnapshots (クライアント);
// スナップショットURL。
System.out.println("Url = " + response.getMediaSnapshot().getSnapshots().get(0).getUrl());
} catch (Exception e) {
System.out.println("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.println("RequestId = " + response.getRequestId());
}
制作スタジオでビデオを前処理する
制作スタジオでビデオを前処理するには、SubmitPreprocessJobs操作を呼び出します。
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「SubmitPreprocessJobs」をご参照ください。 例:
com.aliyuncs.vod.mo del.v20170321.SubmitPreprocessJobsRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.SubmitPreprocessJobsResponseをインポートします。/**
* 制作スタジオでビデオを前処理します。
* /
public static SubmitPreprocessJobsResponse submitPreprocessJobs(DefaultAcsClientクライアント) throws Exception {
SubmitPreprocessJobsRequest request = new SubmitPreprocessJobsRequest();
// ビデオID。
request.setVideoId("c86c0ceb8db54ae09796535 ****");
request.setPreprocessType("PreprocessType");
return client.getAcsResponse (リクエスト);
}
/**
* 呼び出し例
* /
public static void main(String[] args) throws ClientException {
DefaultAcsClient client = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
SubmitPreprocessJobsResponse応答=新しいSubmitPreprocessJobsResponse();
try {
response = submitPreprocessJobs (クライアント);
// タスクID。
System.out.println("JobId = " + response.getPreprocessJobs().get(0).getJobId());
} catch (Exception e) {
System.out.println("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.println("RequestId = " + response.getRequestId());
}