すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:動画のイメージウォーターマークとテキストウォーターマーク

最終更新日:Jun 16, 2026

動画のウォーターマーク機能は、会社のロゴ、テレビ局のアイコン、ユーザーのニックネームや ID などの識別情報を動画に追加することで、ブランドの強調、著作権の保護、製品認知度の向上に役立ちます。ここでは、Java SDK を使用してイメージウォーターマークまたはテキストウォーターマークを追加、更新、削除、照会するためのサンプルコードを提供します。

注意事項

  • このトピックのすべての例では、AccessKey ペアを使用してクライアントインスタンスを初期化します。

  • リクエストとレスポンスのパラメーターの詳細については、Alibaba Cloud OpenAPI Explorer にある [API Documentations] タブをご参照ください。

  • 他の API オペレーションの SDK サンプルについては、Alibaba Cloud OpenAPI Explorer にアクセスしてください。[Parameters] タブでパラメーターを指定して呼び出しを開始し、[SDK Sample Code] タブで SDK のバージョンと言語を選択すると、コードの表示とダウンロードができます。

  • このトピックの例では SDK V1.0 を使用しています。V2.0 の例については、OpenAPI Explorer で正しい SDK バージョンを選択してください。image.png

クライアントの初期化

SDK を使用する前に、クライアントを初期化してください。詳細については、「初期化」をご参照ください。

ウォーターマークの追加

AddWatermark API を呼び出してウォーターマークを追加します。詳細については、次のサンプルコードをご参照ください。

OpenAPI ポータル: または AddWatermark

説明
  • アップロード URL と認証情報を取得するためのパラメーターの詳細については、「CreateUploadAttachedMedia」をご参照ください。

  • Object Storage Service (OSS) へのウォーターマークファイルのアップロードについては、「OSS へのファイルアップロード」をご参照ください。

次のコードはサンプルです:

import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.AddWatermarkRequest;
import com.aliyuncs.vod.model.v20170321.AddWatermarkResponse;

/** 
 * AccessKey 情報を読み取ります。
 */
public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD が有効化されているリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持ちます。API 操作の呼び出しや日常の O&M には、RAM ユーザーを使用することを推奨します。
    // 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;
    }

/**
 * ウォーターマーク設定情報を追加する関数。
 */
public static AddWatermarkResponse addWatermark(DefaultAcsClient client) throws Exception {
    AddWatermarkRequest request = new AddWatermarkRequest();
    // ウォーターマークの名前。
    request.setName("addwatermark");
    // ウォーターマークファイルの OSS URL。例: http://example.oss-cn-shanghai.aliyuncs.com/watermark/test-****.png。
    String fileUrl = "<your watermarkFile URL>";
    // イメージウォーターマークの場合、画像ファイルの OSS URL を指定する必要があります。ウォーターマークファイルは、動画と同じリージョンにある必要があります。たとえば、動画が中国 (上海) リージョンにある場合、ウォーターマークファイルも中国 (上海) リージョンに保存する必要があります。
    request.setFileUrl(fileUrl);
    // ウォーターマーク設定データ。
    JSONObject watermarkConfig = null;
    // イメージウォーターマークの位置設定データ。
    watermarkConfig = buildImageWatermarkConfig();

    // テキストウォーターマークの位置設定データ。
    //watermarkConfig = buildTextWatermarkConfig();
    request.setWatermarkConfig(watermarkConfig.toJSONString());

    // ウォーターマークタイプ。テキストは「Text」、画像は「Image」。
    request.setType("Image");
    return client.getAcsResponse(request);
}


/**
 * 次のコードはサンプルです。
 * @param args
 * @throws ClientException
 */
public static void main(String[] args) throws ClientException {
    DefaultAcsClient client = initVodClient();
    AddWatermarkResponse response = new AddWatermarkResponse();
    try {
        // ウォーターマーク情報を追加します。
        response = addWatermark(client);
        // ウォーターマーク ID。
        System.out.println("WatermarkId = " + response.getWatermarkInfo().getWatermarkId());
        // ウォーターマークの位置と効果の設定データ。
        System.out.println("WatermarkConfig = " + response.getWatermarkInfo().getWatermarkConfig());
        // ウォーターマークファイルの FileUrl。このフィールドはテキストウォーターマークの場合は空です。
        System.out.println("FileUrl = " + response.getWatermarkInfo().getFileUrl());
    } catch (Exception e) {
        System.out.println("ErrorMessage = " + e.getLocalizedMessage());
    }
    System.out.println("RequestId = " + response.getRequestId());
}

/**
 * イメージウォーターマークの設定データを構築します。必要に応じてパラメーター値を変更してください。
 * @return
 */
public static JSONObject buildImageWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // ウォーターマークの水平オフセット。
    watermarkConfig.put("Dx", "8");
    // ウォーターマークの垂直オフセット。
    watermarkConfig.put("Dy", "8");
    // ウォーターマークの幅。
    watermarkConfig.put("Width", "55");
    // ウォーターマークの高さ。
    watermarkConfig.put("Height", "55");
    // ウォーターマークの相対位置。有効な値:TopLeft、TopRight、BottomLeft、BottomRight。
    watermarkConfig.put("ReferPos", "BottomRight");
    // ウォーターマークを表示するタイムライン。開始時刻と表示時間を指定できます。
    JSONObject timeline = new JSONObject();
    // ウォーターマークの表示開始時刻。
    timeline.put("Start", "2");
    // ウォーターマークの表示時間。
    timeline.put("Duration", "ToEND");
    watermarkConfig.put("Timeline", timeline);
    return watermarkConfig;
}

/**
 * テキストウォーターマークの設定データを構築します。必要に応じてパラメーター値を変更してください。
 * @return
 */
public static JSONObject buildTextWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // テキストウォーターマークのコンテンツ。
    watermarkConfig.put("Content", "testwatermark");
    // テキストウォーターマークのフォント名。
    watermarkConfig.put("FontName", "SimSun");
    // テキストウォーターマークのフォントサイズ。
    watermarkConfig.put("FontSize", 25);
    // テキストウォーターマークのフォントカラー。#000000 などの RGB カラー値も指定できます。
    watermarkConfig.put("FontColor", "Black");
    // テキストウォーターマークの透明度。
    watermarkConfig.put("FontAlpha", "0.2");
    // テキストウォーターマークの縁取り色。#ffffff などの RGB カラー値も指定できます。
    watermarkConfig.put("BorderColor", "White");
    // テキストウォーターマークの縁取りの幅。
    watermarkConfig.put("BorderWidth", 1);
    // 動画の上部からのテキストウォーターマークのオフセット。
    watermarkConfig.put("Top", 20);
    // 動画の左側からのテキストウォーターマークのオフセット。
    watermarkConfig.put("Left", 15);
    return watermarkConfig;
}

ウォーターマークの更新

UpdateWatermark API を呼び出してウォーターマークを更新します。詳細については、次のサンプルコードをご参照ください。

OpenAPI ポータル: | UpdateWatermark

次のコードはサンプルです:

import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.UpdateWatermarkRequest;
import com.aliyuncs.vod.model.v20170321.UpdateWatermarkResponse;

/** 
 * AccessKey 情報を読み取ります。
 */
public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD が有効化されているリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持ちます。API 操作の呼び出しや日常の O&M には、RAM ユーザーを使用することを推奨します。
    // 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;
    }

/**
 * ウォーターマーク設定情報を更新する関数。
 * 注:イメージウォーターマークのファイル URL は変更できません。別の画像を使用するには、新しいウォーターマークを作成してください。
 */
public static UpdateWatermarkResponse updateWatermark(DefaultAcsClient client) throws Exception {
    UpdateWatermarkRequest request = new UpdateWatermarkRequest();
    request.setName("updatewatermark");
    // 設定情報を更新するウォーターマークの ID。
    request.setWatermarkId("421ddddd4f6e734a526fd2****");
    // ウォーターマーク設定データ。
    JSONObject watermarkConfig = null;
    // イメージウォーターマークの位置設定データ。
    //watermarkConfig = buildImageWatermarkConfig();
    // テキストウォーターマークの位置設定データ。
    watermarkConfig = buildTextWatermarkConfig();
    request.setWatermarkConfig(watermarkConfig.toJSONString());
    return client.getAcsResponse(request);
}

/**
 * 次のコードはサンプルです。
 */
public static void main(String[] args) {
    DefaultAcsClient client = initVodClient();
    UpdateWatermarkResponse response = new UpdateWatermarkResponse();
    try {
        response = updateWatermark(client);
        // ウォーターマーク ID。
        System.out.println("WatermarkId = " + response.getWatermarkInfo().getWatermarkId());
        // ウォーターマークの位置と効果の設定データ。
        System.out.println("WatermarkConfig = " + response.getWatermarkInfo().getWatermarkConfig());
        // ウォーターマークファイルの FileUrl。このフィールドはテキストウォーターマークの場合は空です。
        System.out.println("FileUrl = " + response.getWatermarkInfo().getFileUrl());
    } catch (Exception e) {
        System.out.println("ErrorMessage = " + e.getLocalizedMessage());
    }
    System.out.println("RequestId = " + response.getRequestId());
}

/**
 * イメージウォーターマークの設定データを構築します。必要に応じてパラメーター値を変更してください。
 * @return
 */
public static JSONObject buildImageWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // ウォーターマークの水平オフセット。
    watermarkConfig.put("Dx", "10");
    // ウォーターマークの垂直オフセット。
    watermarkConfig.put("Dy", "10");
    // ウォーターマークの幅。
    watermarkConfig.put("Width", "66");
    // ウォーターマークの高さ。
    watermarkConfig.put("Height", "66");
    // ウォーターマークの相対位置。有効な値:TopLeft、TopRight、BottomLeft、BottomRight。
    watermarkConfig.put("ReferPos", "BottomLeft");
    // ウォーターマークを表示するタイムライン。開始時刻と表示時間を指定できます。
    JSONObject timeline = new JSONObject();
    // ウォーターマークの表示開始時刻。
    timeline.put("Start", "2");
    // ウォーターマークの表示時間。
    timeline.put("Duration", "ToEND");
    watermarkConfig.put("Timeline", timeline);
    return watermarkConfig;
}

/**
 * テキストウォーターマークの設定データを構築します。必要に応じてパラメーター値を変更してください。
 * @return
 */
public static JSONObject buildTextWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // テキストウォーターマークのコンテンツ。
    watermarkConfig.put("Content", "testwatermark");
    // テキストウォーターマークのフォント名。
    watermarkConfig.put("FontName", "SimSun");
    // テキストウォーターマークのフォントサイズ。
    watermarkConfig.put("FontSize", 40);
    // テキストウォーターマークのフォントカラー。#000000 などの RGB カラー値も指定できます。
    watermarkConfig.put("FontColor", "Black");
    // テキストウォーターマークの透明度。
    watermarkConfig.put("FontAlpha", "0.2");
    // テキストウォーターマークの縁取り色。#ffffff などの RGB カラー値も指定できます。
    watermarkConfig.put("BorderColor", "White");
    // テキストウォーターマークの縁取りの幅。
    watermarkConfig.put("BorderWidth", 2);
    // 動画の上部からのテキストウォーターマークのオフセット。
    watermarkConfig.put("Top", 20);
    // 動画の左側からのテキストウォーターマークのオフセット。
    watermarkConfig.put("Left", 15);
    return watermarkConfig;
}

ウォーターマークの削除

DeleteWatermark API を呼び出してウォーターマークを削除します。

OpenAPI ポータル: / DeleteWatermark

ウォーターマークのリスト照会

ListWatermark API を呼び出してウォーターマークのリストを照会します。

OpenAPI ポータル: | ListWatermark

単一ウォーターマークの照会

GetWatermark API を呼び出して単一のウォーターマークを照会します。

OpenAPI ポータル: | GetWatermark

デフォルトウォーターマークの設定

SetDefaultWatermark API を呼び出してデフォルトウォーターマークを設定します。

OpenAPI ポータル: | SetDefaultWatermark

関連ドキュメント

動画のイメージウォーターマークとテキストウォーターマーク:ApsaraVideo VOD のイメージウォーターマークとテキストウォーターマーク機能について、その仕組み、シナリオ、サンプルなどを詳しく説明します。