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

ApsaraVideo Live:ライブウォーターマーク

最終更新日:Aug 07, 2026

ApsaraVideo Live では、著作権保護や広告目的で、ライブストリームに画像ウォーターマークをオーバーレイできます。

ユースケース

著作権保護: ライブ動画にウォーターマークを追加して、不正使用を抑止します。

広告: ライブストリームにプロモーションラベルやイベントの詳細を表示します。

前提条件

  • ウォーターマーク機能を使用するには、ウォーターマーク画像が必要です。画像ウォーターマークのみがサポートされています。テキストウォーターマークが必要な場合は、テキストの PNG 画像を作成してください。ウォーターマーク画像のフォーマットは JPG または PNG です。

  • ウォーターマーク画像の URL が必要です。ApsaraVideo Live は URL から画像を取得し、直接アップロードはサポートしていません。この URL に常にアクセスできることを確認してください。

機能設定

ウォーターマークを使用するには、[透かしテンプレート]と[透かしルール]を設定します。

ウォーターマークテンプレートは、位置、透明度、画像 URL など、ウォーターマークの外観を定義します。

ウォーターマークルールは、AppName と StreamName を特定のウォーターマークテンプレートに関連付けます。

ウォーターマークテンプレートの設定

ウォーターマークテンプレートは、コンソールで設定するか、API を呼び出して設定できます。

コンソールでの設定

  1. ApsaraVideo Liveコンソールにログインします。

  2. 左側のナビゲーションペインで、機能管理 > ライブストリームのウォーターマーク を選択します。 ライブストリームのウォーターマーク ページで、透かしテンプレート タブをクリックします。

  3. 設定するストリーミングドメインを選択します。

  4. 透かしテンプレートの追加 をクリックして、テンプレートを設定します。

    プレビューエリアでウォーターマーク効果をプレビューします。 画面サイズ、ウォーターマークサイズ、位置を調整して、リアルタイムでプレビューします。 テンプレートのパラメーターを次の表に示します。

    パラメーター

    説明

    [透かしテンプレート名]

    ウォーターマークテンプレートの名前。 名前は最大 30 文字で、漢字、英数字、ハイフン (-)、アンダースコア (_) を使用できます。

    [透かしの説明]

    ウォーターマークの説明。 説明は最大 128 文字で、漢字、英数字、特殊文字を使用できます。

    [透かし素材]

    ウォーターマーク画像の URL を入力します。 URL は、http:// または https:// で始まる必要があります。

    Object Storage Service (OSS) または長期認証を持つ別のソースからの永続的な URL を使用します。

    [座標原点]

    出力ビデオにおけるウォーターマークのアンカーコーナー。 ウォーターマークは、このコーナーからオフセットされます。 有効な値:

    • 右上 (デフォルト)

    • 右下

    • 左上

    • 左下

    [プレビュー画面サイズ (幅 × 高さ)]

    ウォーターマークの位置と外観のプレビューに使用する、実際のビデオのディメンション。 単位:ピクセル。

    [透かしのサイズ (幅 × 高さ)]

    ウォーターマーク画像のサイズ。 幅は高さに基づいて自動的にスケーリングされます。

    • 値の範囲:[0, 4096]。

    • 単位:ピクセル。

    [透かしの水平オフセット]

    出力ビデオの座標の原点からのウォーターマークの水平オフセット。

    • 値の範囲:[0, 4096]。

    • 単位:ピクセル。

    [透かしの垂直オフセット]

    出力ビデオの座標の原点からのウォーターマークの垂直オフセット。

    • 値の範囲:[0, 4096]。

    • 単位:ピクセル。

    [透明度]

    ウォーターマークの不透明度。 0 は完全な透明、100 は完全な不透明を意味します。

    • 値の範囲:[0, 100]。

    • 単位:パーセント。

  5. [保存] をクリックして、ウォーターマークテンプレートの設定を完了します。

  6. ウォーターマークテンプレートを追加すると、ウォーターマークルールを追加するように求めるダイアログボックスが表示されます。 追加 をクリックして、このテンプレートのウォーターマークルールを作成できます。 ウォーターマークルールの設定方法の詳細については、「ウォーターマークルールの設定」をご参照ください。

    説明

    ウォーターマークテンプレートを作成した後、それをウォーターマークルールに関連付ける必要があります。 ルール内の AppName と StreamName は、アップストリーミング URL 内のものと一致する必要があります。 変更を適用するには、アップストリーミングを再起動する必要があります。

API を使用した設定

ウォーターマークテンプレートのパラメーターは複雑です。 プログラムでテンプレートを設定する場合でも、コンソールのビジュアルインターフェイスを使用してウォーターマークの位置をプレビューすることを推奨します。

  1. まず、ApsaraVideo Live コンソールでウォーターマークテンプレートを追加します。

  2. パラメーターを設定した後、テンプレートの設定をクエリします。

    // このファイルは自動生成されたものです。編集しないでください。ありがとうございます。
    package demo;
    
    import com.aliyun.auth.credentials.Credential;
    import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
    import com.aliyun.core.http.HttpClient;
    import com.aliyun.core.http.HttpMethod;
    import com.aliyun.core.http.ProxyOptions;
    import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
    import com.aliyun.sdk.service.live20161101.models.*;
    import com.aliyun.sdk.service.live20161101.*;
    import com.google.gson.Gson;
    import darabonba.core.RequestConfiguration;
    import darabonba.core.client.ClientOverrideConfiguration;
    import darabonba.core.utils.CommonUtil;
    import darabonba.core.TeaPair;
    
    //import javax.net.ssl.KeyManager;
    //import javax.net.ssl.X509TrustManager;
    import java.net.InetSocketAddress;
    import java.time.Duration;
    import java.util.*;
    import java.util.concurrent.CompletableFuture;
    import java.io.*;
    
    public class DescribeLiveStreamWatermarks {
        public static void main(String[] args) throws Exception {
    
            // HttpClient を設定します。
            /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                    .connectionTimeout(Duration.ofSeconds(10)) // 接続のタイムアウト期間。 デフォルト値:10 秒。
                    .responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウト期間。 デフォルト値:20 秒。
                    .maxConnections(128) // 接続プールのサイズ。
                    .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウト期間。 デフォルト値:30 秒。
                    // プロキシを設定します。
                    .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<your-proxy-hostname>", 9001))
                            .setCredentials("<your-proxy-username>", "<your-proxy-password>"))
                    // HTTPS 接続の場合は、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                    .x509TrustManagers(new X509TrustManager[]{})
                    .keyManagers(new KeyManager[]{})
                    .ignoreSSL(false)
                    .build();*/
    
            // AccessKey ID、AccessKey シークレット、セキュリティトークンなどの認証用の資格情報を設定します。
            StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                    // ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                    .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                    //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Security Token Service (STS) トークンを使用します。
                    .build());
    
            // クライアントを設定します。
            AsyncClient client = AsyncClient.builder()
                    .region("<your-region-id>") // リージョン ID。
                    //.httpClient(httpClient) // 設定された HttpClient を使用します。 それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                    .credentialsProvider(provider)
                    //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                    // クライアントレベルの設定。 エンドポイントと HTTP リクエストパラメーターを上書きできます。
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                      // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                    .setEndpointOverride("live.aliyuncs.com")
                            //.setConnectTimeout(Duration.ofSeconds(30))
                    )
                    .build();
    
            // API リクエストのパラメーターを設定します。
            DescribeLiveStreamWatermarksRequest describeLiveStreamWatermarksRequest = DescribeLiveStreamWatermarksRequest.builder()
                    .regionId("<your-region-id>")
                    .domain("<your-domain>")
                    .keyWord("<your-keyword>")
                    // リクエストレベルの設定。 HTTP リクエストパラメーターを上書きできます。
                    // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                    .build();
    
            // API リクエストの戻り値を非同期に取得します。
            CompletableFuture<DescribeLiveStreamWatermarksResponse> response = client.describeLiveStreamWatermarks(describeLiveStreamWatermarksRequest);
            // API リクエストの戻り値を同期的に取得します。
            DescribeLiveStreamWatermarksResponse resp = response.get();
            System.out.println(new Gson().toJson(resp));
            // 戻り値を非同期に処理します。
            /*response.thenAccept(resp -> {
                System.out.println(new Gson().toJson(resp));
            }).exceptionally(throwable -> { // 例外を処理します。
                System.out.println(throwable.getMessage());
                return null;
            });*/
    
            // クライアントを閉じます。
            client.close();
        }
    
    }
    説明
    • テンプレート ID または名前でウォーターマークテンプレートのリストをクエリできます。 詳細については、「DescribeLiveStreamWatermarks API リファレンス」をご参照ください。

    • クエリで取得したウォーターマークテンプレート情報を、ビジネスシステムにテンプレートとして保存できます。

  3. ウォーターマークテンプレートの設定を追加します。

    // このファイルは自動生成されたものです。編集しないでください。ありがとうございます。
    package demo;
    
    import com.aliyun.auth.credentials.Credential;
    import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
    import com.aliyun.core.http.HttpClient;
    import com.aliyun.core.http.HttpMethod;
    import com.aliyun.core.http.ProxyOptions;
    import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
    import com.aliyun.sdk.service.live20161101.models.*;
    import com.aliyun.sdk.service.live20161101.*;
    import com.google.gson.Gson;
    import darabonba.core.RequestConfiguration;
    import darabonba.core.client.ClientOverrideConfiguration;
    import darabonba.core.utils.CommonUtil;
    import darabonba.core.TeaPair;
    
    //import javax.net.ssl.KeyManager;
    //import javax.net.ssl.X509TrustManager;
    import java.net.InetSocketAddress;
    import java.time.Duration;
    import java.util.*;
    import java.util.concurrent.CompletableFuture;
    import java.io.*;
    
    public class AddLiveStreamWatermark {
        public static void main(String[] args) throws Exception {
    
            // HttpClient を設定します。
            /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                    .connectionTimeout(Duration.ofSeconds(10)) // 接続のタイムアウト期間。 デフォルト値:10 秒。
                    .responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウト期間。 デフォルト値:20 秒。
                    .maxConnections(128) // 接続プールのサイズ。
                    .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウト期間。 デフォルト値:30 秒。
                    // プロキシを設定します。
                    .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<your-proxy-hostname>", 9001))
                            .setCredentials("<your-proxy-username>", "<your-proxy-password>"))
                    // HTTPS 接続の場合は、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                    .x509TrustManagers(new X509TrustManager[]{})
                    .keyManagers(new KeyManager[]{})
                    .ignoreSSL(false)
                    .build();*/
    
            // AccessKey ID、AccessKey シークレット、セキュリティトークンなどの認証用の資格情報を設定します。
            StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                    // ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                    .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                    //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Security Token Service (STS) トークンを使用します。
                    .build());
    
            // クライアントを設定します。
            AsyncClient client = AsyncClient.builder()
                    .region("<your-region-id>") // リージョン ID。
                    //.httpClient(httpClient) // 設定された HttpClient を使用します。 それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                    .credentialsProvider(provider)
                    //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                    // クライアントレベルの設定。 エンドポイントと HTTP リクエストパラメーターを上書きできます。
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                      // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                    .setEndpointOverride("live.aliyuncs.com")
                            //.setConnectTimeout(Duration.ofSeconds(30))
                    )
                    .build();
    
            // API リクエストのパラメーターを設定します。
            AddLiveStreamWatermarkRequest addLiveStreamWatermarkRequest = AddLiveStreamWatermarkRequest.builder()
                    .regionId("<your-region-id>")
                    .type(1)
                    .name("<your-name>")
                    .refWidth(1920)
                    .refHeight(1080)
                    .xOffset(50F)
                    .yOffset(100F)
                    .height(200)
                    .transparency(100)
                    .offsetCorner("<your-offset-corner>")
                    .pictureUrl("<your-picture-url>")
                    // リクエストレベルの設定。 HTTP リクエストパラメーターを上書きできます。
                    // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                    .build();
    
            // API リクエストの戻り値を非同期に取得します。
            CompletableFuture<AddLiveStreamWatermarkResponse> response = client.addLiveStreamWatermark(addLiveStreamWatermarkRequest);
            // API リクエストの戻り値を同期的に取得します。
            AddLiveStreamWatermarkResponse resp = response.get();
            System.out.println(new Gson().toJson(resp));
            // 戻り値を非同期に処理します。
            /*response.thenAccept(resp -> {
                System.out.println(new Gson().toJson(resp));
            }).exceptionally(throwable -> { // 例外を処理します。
                System.out.println(throwable.getMessage());
                return null;
            });*/
    
            // クライアントを閉じます。
            client.close();
        }
    
    }
    説明

    パラメーターの詳細については、「AddLiveStreamWatermark API リファレンス」をご参照ください。

    これでウォーターマークテンプレートの設定は完了です。 次に、ウォーターマークルールを設定する必要があります。

重要
  • ウォーターマークとタイムシフトは同時に使用できません。

ウォーターマークルールの設定

ウォーターマークテンプレートを作成した後、それを適用するためのウォーターマークルールを作成します。

ウォーターマークルールは、コンソールで設定するか、API を使用して設定できます。

コンソールでの設定

  1. ApsaraVideo Liveコンソールにログインします。

  2. 左側のナビゲーションペインで、機能管理 > ライブストリームのウォーターマーク を選択します。 ライブストリームのウォーターマーク ページで、透かしルール タブをクリックします。

  3. 設定するストリーミングドメインを選択します。

  4. 透かしルールの追加 をクリックします。

    ウォーターマークルールのパラメーターを次の表に示します。

    パラメーター

    説明

    [ルール名]

    ウォーターマークルールの名前。 名前は最大 32 文字で、漢字、英数字、特殊文字を使用できます。

    [ルールの説明]

    ウォーターマークルールの説明。 説明は最大 128 文字で、漢字、英数字、特殊文字を使用できます。

    [アプリケーション名]

    ストリームが属するアプリケーションの名前。 ウォーターマークテンプレートを有効にするには、AppName がアップストリーム URL の AppName と一致する必要があります。 名前は最大 256 文字で、英数字、ハイフン (-)、アンダースコア (_) を含めることができます。

    [ストリーム名]

    ライブストリームの名前。 次のルールが適用されます:

    • 特定のストリーム名を入力して、そのストリームのみを照合します。 例: liveStreamA。

    • ワイルドカードマッチングを使用できます。

      すべてのライブストリームに一致させるには、アスタリスク (*) のみを入力します。

      前方一致または後方一致マッチングを実行することもできます。一致させる項目は括弧 () で囲み、複数の項目は縦棒 | で区切る必要があります。アスタリスク (*) ワイルドカードは、文字列の先頭または末尾でのみ使用できます。例: (abc|123)* は、abc または 123 で始まるすべてのストリームに一致します。*(t1|t2) は、t1 または t2 で終わるすべてのストリームに一致します。

    • 名前は最大 256 文字で、英数字、ハイフン (-)、アンダースコア (_)、アスタリスク (*)、等号 (=) を含めることができます。

    [透かしテンプレート]

    設定済みのウォーターマークテンプレートを選択します。 利用可能なテンプレートがない場合は、まずテンプレートを作成します。 詳細については、「ウォーターマークテンプレートの設定」をご参照ください。

  5. [保存] をクリックして、ウォーターマークルールの設定を完了します。

    説明

    ウォーターマークルールを設定した後、再生中にウォーターマークを表示するには、アップストリーミングを再起動する必要があります。

ウォーターマークルールリスト

ウォーターマークルールを保存すると、ウォーターマークルールリストページに戻ります。 リストを表示する前に、ストリーミングドメインを追加する必要があります。ストリーミングドメインが追加されていない場合、ルールリストは表示されません。 リストには、作成したウォーターマークルールが次の列に表示されます:

  • ウォーターマークルール ID/名前:ルールの ID と名前。

  • [アプリケーション名]:ルールが適用されるストリーミングアプリケーションの名前。

  • ストリーム名:ルールが一致するライブストリームの名前。

  • ウォーターマークテンプレート:ルールに関連付けられているウォーターマークテンプレート。

  • 操作:ウォーターマークルールを有効または無効にするために使用されます。

ウォーターマークルールを有効化または無効化するには、リストの [操作] 列にある対応するボタンをクリックしてステータスを切り替えます。 このコンソールには、状態を示す個別の列はありません。有効/無効の状態は、[操作] 列のボタンで直接切り替えられます。 ウォーターマークルールが有効化されると、一致するライブストリームがアップストリーミングされるときにウォーターマークが追加されます。

API を使用した設定

// このファイルは自動生成されたものです。編集しないでください。ありがとうございます。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class AddLiveStreamWatermarkRule {
    public static void main(String[] args) throws Exception {

        // HttpClient を設定します。
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続のタイムアウト期間。 デフォルト値:10 秒。
                .responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウト期間。 デフォルト値:20 秒。
                .maxConnections(128) // 接続プールのサイズ。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウト期間。 デフォルト値:30 秒。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<your-proxy-hostname>", 9001))
                        .setCredentials("<your-proxy-username>", "<your-proxy-password>"))
                // HTTPS 接続の場合は、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // AccessKey ID、AccessKey シークレット、セキュリティトークンなどの認証用の資格情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Security Token Service (STS) トークンを使用します。
                .build());

        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<your-region-id>") // リージョン ID。
                //.httpClient(httpClient) // 設定された HttpClient を使用します。 それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                // クライアントレベルの設定。 エンドポイントと HTTP リクエストパラメーターを上書きできます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーターを設定します。
        AddLiveStreamWatermarkRuleRequest addLiveStreamWatermarkRuleRequest = AddLiveStreamWatermarkRuleRequest.builder()
                .regionId("<your-region-id>")
                .name("<your-name>")
                .domain("<your-domain>")
                .app("<your-app>")
                .stream("<your-stream>")
                .templateId("<your-template-id>")
                // リクエストレベルの設定。 HTTP リクエストパラメーターを上書きできます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期に取得します。
        CompletableFuture<AddLiveStreamWatermarkRuleResponse> response = client.addLiveStreamWatermarkRule(addLiveStreamWatermarkRuleRequest);
        // API リクエストの戻り値を同期的に取得します。
        AddLiveStreamWatermarkRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // 戻り値を非同期に処理します。
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // 例外を処理します。
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // クライアントを閉じます。
        client.close();
    }

}
説明
  • <AppName> は最大 256 文字で、英数字、ハイフン (-)、アンダースコア (_) を含めることができます。 アスタリスク (*) はサポートされていません。

  • ウォーターマークルールの照合は優先順位に基づいています。 特定の <StreamName> (ワイルドカード * ではない) を持つルールが最初に照合されます。

  • パラメーターの詳細については、「AddLiveStreamWatermarkRule API リファレンス」をご参照ください。

機能の使用

ウォーターマークテンプレートとウォーターマークルールを設定した後、ストリームインジェストと再生を開始してウォーターマークを適用します。ウォーターマークとして、ライブストリームの右上にオレンジ色のテキストウォーターマーク「这是一个水印」が表示されます。

この例のウォーターマークは、テキストベースの PNG 画像です。

ウォーターマークの透明度

次のコードは、ウォーターマークの透明度を設定する方法を示しています。

// ウォーターマークの透明度。値が小さいほど透明度が高くなります。有効値:0~255。デフォルト値:255。
addLiveStreamWatermarkRequest.setTransparency(255);

たとえば、透明度を 128 に設定すると、ウォーターマークテキスト (「这是一个水印」など) は、ライブビデオの右上に半透明のオーバーレイとして表示され、視聴者には見えますが、下にあるコンテンツを完全に覆い隠すことはありません。

ウォーターマークの更新

ウォーターマークテンプレートを更新するサンプルコード

// このファイルは自動生成されたものです。編集しないでください。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class UpdateLiveStreamWatermark {
    public static void main(String[] args) throws Exception {

        // HttpClient を設定します。
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続タイムアウトを設定します。デフォルトは 10 秒です。
                .responseTimeout(Duration.ofSeconds(10)) // 応答タイムアウトを設定します。デフォルトは 20 秒です。
                .maxConnections(128) // 接続プールサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを設定します。デフォルトは 30 秒です。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // AccessKey ID、AccessKey Secret、トークンなどの認証情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // STS トークンを使用します。
                .build());

        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // リージョン ID。
                //.httpClient(httpClient) // 設定済みの HttpClient を使用します。それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                // クライアントレベルの設定を上書きします。エンドポイント、HTTP リクエストパラメーターなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーターを設定します。
        UpdateLiveStreamWatermarkRequest updateLiveStreamWatermarkRequest = UpdateLiveStreamWatermarkRequest.builder()
                .regionId("<Your RegionId>")
                .templateId("<Your templateId>")
                .name("<Your name>")
                .description("<Your description>")
                // リクエストレベルの設定を上書きします。HTTP リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期に取得します。
        CompletableFuture<UpdateLiveStreamWatermarkResponse> response = client.updateLiveStreamWatermark(updateLiveStreamWatermarkRequest);
        // API リクエストの戻り値を同期的に取得します。
        UpdateLiveStreamWatermarkResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // 戻り値を非同期に処理します。
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // 例外を処理します。
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // クライアントを閉じます。
        client.close();
    }

}
説明
  • は、テンプレートのドメイン名に関連付けられているライブセンターのリージョンと一致する必要があります。リージョン ID のリストについては、「サービスエンドポイント」をご参照ください。

  • パラメーターの詳細については、「UpdateLiveStreamWatermark API リファレンス」をご参照ください。

ウォーターマークルールを更新するサンプルコード

// このファイルは自動生成されたものです。編集しないでください。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class UpdateLiveStreamWatermarkRule {
    public static void main(String[] args) throws Exception {

        // HttpClient を設定します。
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続タイムアウトを設定します。デフォルトは 10 秒です。
                .responseTimeout(Duration.ofSeconds(10)) // 応答タイムアウトを設定します。デフォルトは 20 秒です。
                .maxConnections(128) // 接続プールサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを設定します。デフォルトは 30 秒です。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // AccessKey ID、AccessKey Secret、トークンなどの認証情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // STS トークンを使用します。
                .build());

        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // リージョン ID。
                //.httpClient(httpClient) // 設定済みの HttpClient を使用します。それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                // クライアントレベルの設定を上書きします。エンドポイント、HTTP リクエストパラメーターなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーターを設定します。
        UpdateLiveStreamWatermarkRuleRequest updateLiveStreamWatermarkRuleRequest = UpdateLiveStreamWatermarkRuleRequest.builder()
                .regionId("<Your RegionId>")
                .ruleId("<Your RuleId>")
                // リクエストレベルの設定を上書きします。HTTP リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期に取得します。
        CompletableFuture<UpdateLiveStreamWatermarkRuleResponse> response = client.updateLiveStreamWatermarkRule(updateLiveStreamWatermarkRuleRequest);
        // API リクエストの戻り値を同期的に取得します。
        UpdateLiveStreamWatermarkRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // 戻り値を非同期に処理します。
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // 例外を処理します。
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // クライアントを閉じます。
        client.close();
    }

}
説明
  • は、テンプレートのドメイン名に関連付けられているライブセンターのリージョンと一致する必要があります。リージョン ID のリストについては、「サービスエンドポイント」をご参照ください。

  • ルールの他のプロパティを更新できます。詳細については、「UpdateLiveStreamWatermarkRule API リファレンス」をご参照ください。

ウォーターマークテンプレートまたはウォーターマークルールの変更は、ストリームインジェストを再起動した後にのみ有効になります。ライブストリーム中に再起動せずにウォーターマークを更新するには、動的なウォーターマークの更新機能を使用します。

この更新を実行するには、DynamicUpdateWaterMarkStreamRule API を呼び出します。

動的なウォーターマーク更新のサンプルコード

// このファイルは自動生成されたものです。編集しないでください。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class DynamicUpdateWaterMarkStreamRule {
    public static void main(String[] args) throws Exception {

        // HttpClient を設定します。
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続タイムアウトを設定します。デフォルトは 10 秒です。
                .responseTimeout(Duration.ofSeconds(10)) // 応答タイムアウトを設定します。デフォルトは 20 秒です。
                .maxConnections(128) // 接続プールサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを設定します。デフォルトは 30 秒です。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // AccessKey ID、AccessKey Secret、トークンなどの認証情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // STS トークンを使用します。
                .build());

        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // リージョン ID。
                //.httpClient(httpClient) // 設定済みの HttpClient を使用します。それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                // クライアントレベルの設定を上書きします。エンドポイント、HTTP リクエストパラメーターなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーターを設定します。
        DynamicUpdateWaterMarkStreamRuleRequest dynamicUpdateWaterMarkStreamRuleRequest = DynamicUpdateWaterMarkStreamRuleRequest.builder()
                .regionId("<Your RegionId>")
                .domain("<Your Domain>")
                .app("<Your App>")
                .stream("<Your Stream>")
                .templateId("<Your TemplateId>")
                // リクエストレベルの設定を上書きします。HTTP リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期に取得します。
        CompletableFuture<DynamicUpdateWaterMarkStreamRuleResponse> response = client.dynamicUpdateWaterMarkStreamRule(dynamicUpdateWaterMarkStreamRuleRequest);
        // API リクエストの戻り値を同期的に取得します。
        DynamicUpdateWaterMarkStreamRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // 戻り値を非同期に処理します。
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // 例外を処理します。
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // クライアントを閉じます。
        client.close();
    }

}
重要
  • には、新しいテンプレートまたは元のテンプレートの ID を指定できます。このメソッドを呼び出すと、画像、透明度、位置など、指定されたテンプレートの最新の設定に一致するようにウォーターマークが更新されます。

  • 現在、動的更新は、ストリーム名にあいまい一致を使用するウォーターマークルールではサポートされていません。

ウォーターマークテンプレートの削除

[透かしテンプレート]を削除する前に、関連付けられているすべてのウォーターマークルールをまず削除してください。

ウォーターマークルールを削除するサンプルコード

// このファイルは自動生成されたものです。編集しないでください。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class DeleteLiveStreamWatermarkRule {
    public static void main(String[] args) throws Exception {

        // HttpClient を設定します。
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続タイムアウトを設定します。デフォルトは 10 秒です。
                .responseTimeout(Duration.ofSeconds(10)) // 応答タイムアウトを設定します。デフォルトは 20 秒です。
                .maxConnections(128) // 接続プールサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを設定します。デフォルトは 30 秒です。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // AccessKey ID、AccessKey Secret、トークンなどの認証情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // STS トークンを使用します。
                .build());

        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // リージョン ID。
                //.httpClient(httpClient) // 設定済みの HttpClient を使用します。それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                // クライアントレベルの設定を上書きします。エンドポイント、HTTP リクエストパラメーターなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーターを設定します。
        DeleteLiveStreamWatermarkRuleRequest deleteLiveStreamWatermarkRuleRequest = DeleteLiveStreamWatermarkRuleRequest.builder()
                .regionId("<Your RegionId>")
                .ruleId("<Your RuleId>")
                // リクエストレベルの設定を上書きします。HTTP リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期に取得します。
        CompletableFuture<DeleteLiveStreamWatermarkRuleResponse> response = client.deleteLiveStreamWatermarkRule(deleteLiveStreamWatermarkRuleRequest);
        // API リクエストの戻り値を同期的に取得します。
        DeleteLiveStreamWatermarkRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // 戻り値を非同期に処理します。
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // 例外を処理します。
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // クライアントを閉じます。
        client.close();
    }

}
説明

削除するウォーターマークルールの RuleId を指定します。詳細については、「DeleteLiveStreamWatermarkRule API リファレンス」をご参照ください。

ウォーターマークテンプレートを削除するサンプルコード

// このファイルは自動生成されたものです。編集しないでください。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class DeleteLiveStreamWatermark {
    public static void main(String[] args) throws Exception {

        // HttpClient を設定します。
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続タイムアウトを設定します。デフォルトは 10 秒です。
                .responseTimeout(Duration.ofSeconds(10)) // 応答タイムアウトを設定します。デフォルトは 20 秒です。
                .maxConnections(128) // 接続プールサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを設定します。デフォルトは 30 秒です。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // AccessKey ID、AccessKey Secret、トークンなどの認証情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // STS トークンを使用します。
                .build());

        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // リージョン ID。
                //.httpClient(httpClient) // 設定済みの HttpClient を使用します。それ以外の場合は、デフォルトの Apache HttpClient が使用されます。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定。
                // クライアントレベルの設定を上書きします。エンドポイント、HTTP リクエストパラメーターなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントの詳細については、https://api.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーターを設定します。
        DeleteLiveStreamWatermarkRequest deleteLiveStreamWatermarkRequest = DeleteLiveStreamWatermarkRequest.builder()
                .regionId("<Your RegionId>")
                .templateId("<Your TemplateId>")
                // リクエストレベルの設定を上書きします。HTTP リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期に取得します。
        CompletableFuture<DeleteLiveStreamWatermarkResponse> response = client.deleteLiveStreamWatermark(deleteLiveStreamWatermarkRequest);
        // API リクエストの戻り値を同期的に取得します。
        DeleteLiveStreamWatermarkResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // 戻り値を非同期に処理します。
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // 例外を処理します。
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // クライアントを閉じます。
        client.close();
    }

}
説明
  • は、テンプレートのドメイン名に関連付けられているライブセンターのリージョンと一致する必要があります。リージョン ID のリストについては、「サービスエンドポイント」をご参照ください。

  • 詳細については、「DeleteLiveStreamWatermark API リファレンス」をご参照ください。

参考資料

Java SDK の使用方法については、Java SDK 使用ガイドをご参照ください。