このトピックでは、メディア処理モジュールの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操作を呼び出して、スナップショットジョブを送信できます。

この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「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());
}