ApsaraVideo Live では、著作権保護または広告を目的として、ライブストリームに画像ウォーターマークをオーバーレイできます。
ユースケース
著作権保護:ライブ動画にウォーターマークを追加して、不正使用を抑止できます。
広告:ライブストリームにプロモーションラベルやイベントの詳細を表示できます。
前提条件
-
ウォーターマーク機能を使用するには、ウォーターマーク画像が必要です。サポートされているのは画像ウォーターマークのみです。テキストウォーターマークが必要な場合は、テキストの PNG 画像を作成してください。ウォーターマーク画像のフォーマットは JPG または PNG です。
-
ウォーターマーク画像の URL が必要です。ApsaraVideo Live は URL から画像を取得するため、直接のアップロードはサポートしていません。この URL に常にアクセスできることを確認してください。
機能設定
ウォーターマークを使用するには、[透かしテンプレート] と [透かしルール] を設定します。
ウォーターマークテンプレートは、位置、透明度、画像 URL など、ウォーターマークの外観を定義します。
ウォーターマークルールは、AppName と StreamName を特定のウォーターマークテンプレートに関連付けます。
ウォーターマークテンプレートの設定
ウォーターマークテンプレートは、コンソールで設定するか、API を呼び出して設定できます。
コンソールでの設定
ApsaraVideo Liveコンソールにログインします。
-
左側のナビゲーションペインで、機能管理 > ライブストリームのウォーターマーク を選択します。ライブストリームのウォーターマーク ページで、透かしテンプレート タブをクリックします。
-
設定するストリーミングドメインを選択します。
-
透かしテンプレートの追加 をクリックし、テンプレートを設定します。

プレビューエリアでウォーターマークの効果をプレビューできます。画面サイズ、ウォーターマークサイズ、位置を調整して、リアルタイムでプレビューできます。次の表で、テンプレートのパラメーターを説明します。
パラメーター
説明
[透かしテンプレート名]
ウォーターマークテンプレートの名前です。名前は最大 30 文字で、漢字、英字、数字、ハイフン (-)、アンダースコア (_) を使用できます。
[透かしの説明]
ウォーターマークの説明です。説明は最大 128 文字で、漢字、英字、数字、特殊文字を使用できます。
[透かし素材]
ウォーターマーク画像の URL を入力します。URL は
http://またはhttps://で始まる必要があります。Object Storage Service (OSS) または長期認証を持つ別のソースからの永続的な URL を使用してください。
[座標原点]
出力ビデオでのウォーターマークのアンカーコーナーです。ウォーターマークはこのコーナーからオフセットされます。有効な値:
-
右上 (デフォルト)
-
右下
-
左上
-
左下
[プレビュー画面サイズ (幅 × 高さ)]
実際のビデオの寸法です。ウォーターマークの位置と外観をプレビューするために使用します。単位:ピクセル。
[透かしのサイズ (幅 × 高さ)]
ウォーターマーク画像のサイズです。幅は高さに基づいて自動的にスケーリングされます。
-
値の範囲:[0, 4096]
-
単位:ピクセル
[透かしの水平オフセット]
出力ビデオ内の座標の原点からのウォーターマークの水平オフセットです。
-
値の範囲:[0, 4096]
-
単位:ピクセル
[透かしの垂直オフセット]
出力ビデオ内の座標の原点からのウォーターマークの垂直オフセットです。
-
値の範囲:[0, 4096]
-
単位:ピクセル
[透明度]
ウォーターマークの不透明度です。0 は完全な透明、100 は完全な不透明を示します。
-
値の範囲:[0, 100]
-
単位:パーセント
-
-
[保存] をクリックして、ウォーターマークテンプレートの設定を完了します。
-
ウォーターマークテンプレートを追加すると、ウォーターマークルールを追加するためのダイアログボックスが表示されます。追加 をクリックして、このテンプレートのウォーターマークルールを作成できます。ウォーターマークルールの設定方法の詳細については、「ウォーターマークルールの設定」をご参照ください。
説明ウォーターマークテンプレートを作成した後、ウォーターマークルールに関連付ける必要があります。ルール内の AppName と StreamName は、アップストリーミング URL 内のものと一致する必要があります。変更を適用するには、アップストリーミングを再起動する必要があります。
API を使用した設定
ウォーターマークテンプレートのパラメーターは複雑です。プログラムでテンプレートを設定する場合でも、コンソールのビジュアルインターフェイスを使用してウォーターマークの位置をプレビューすることを推奨します。
-
まず、ApsaraVideo Live コンソールでウォーターマークテンプレートを追加します。
-
パラメーターを設定した後、テンプレートの設定を照会します。
// このファイルは自動生成されたものです。編集しないでください。ありがとうございます。 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("", 9001)) .setCredentials("", "")) // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。 .x509TrustManagers(new X509TrustManager[]{}) .keyManagers(new KeyManager[]{}) .ignoreSSL(false) .build();*/ // アクセスキー 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")) // Security Token Service (STS) トークンを使用します。 .build()); // クライアントを設定します。 AsyncClient client = AsyncClient.builder() .region("") // リージョン 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("") .domain("") .keyWord("") // リクエストレベルの設定。HTTP リクエストパラメーターを上書きできます。 // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders())) .build(); // API リクエストの戻り値を非同期で取得します。 CompletableFuture 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 リファレンスをご参照ください。
-
照会したウォーターマークテンプレート情報を、お使いのビジネスシステムにテンプレートとして保存できます。
-
-
ウォーターマークテンプレート設定を追加します。
// このファイルは自動生成されたものです。編集しないでください。ありがとうございます。 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("", 9001)) .setCredentials("", "")) // HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。 .x509TrustManagers(new X509TrustManager[]{}) .keyManagers(new KeyManager[]{}) .ignoreSSL(false) .build();*/ // アクセスキー 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")) // Security Token Service (STS) トークンを使用します。 .build()); // クライアントを設定します。 AsyncClient client = AsyncClient.builder() .region("") // リージョン 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("") .type(1) .name("") .refWidth(1920) .refHeight(1080) .xOffset(50F) .yOffset(100F) .height(200) .transparency(255) .offsetCorner("") .pictureUrl("") // リクエストレベルの設定。HTTP リクエストパラメーターを上書きできます。 // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders())) .build(); // API リクエストの戻り値を非同期で取得します。 CompletableFuture 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 を使用して設定できます。
コンソールでの設定
ApsaraVideo Liveコンソールにログインします。
-
左側のナビゲーションペインで、機能管理 > ライブストリームのウォーターマーク を選択します。ライブストリームのウォーターマーク ページで、透かしルール タブをクリックします。
-
設定するストリーミングドメインを選択します。
-
透かしルールの追加 をクリックします。

次の表で、ウォーターマークルールのパラメーターを説明します。
パラメーター
説明
[ルール名]
ウォーターマークルールの名前です。名前は最大 32 文字で、漢字、英字、数字、特殊文字を使用できます。
[ルールの説明]
ウォーターマークルールの説明です。説明は最大 128 文字で、漢字、英字、数字、特殊文字を使用できます。
[アプリケーション名]
ストリームが属するアプリケーションの名前です。ウォーターマークテンプレートを有効にするには、AppName がアップストリーミング URL の AppName と同じである必要があります。名前は最大 256 文字で、数字、英字、ハイフン (-)、アンダースコア (_) を使用できます。
[ストリーム名]
ライブストリームの名前です。次のルールが適用されます:
-
特定のストリームのみに一致させるには、そのストリーム名を入力します。例:
liveStreamA -
ワイルドカードマッチングを使用できます。
すべてのライブストリームに一致させるには、アスタリスク (*) のみを入力します。
プレフィックスまたはサフィックスマッチングも実行できます。一致する項目は括弧
()で囲み、複数の項目は縦棒|で区切る必要があります。アスタリスク (*) ワイルドカードは、文字列の先頭または末尾でのみ使用できます。例:(abc|123)*はabcまたは123で始まるすべてのストリームに一致します。*(t1|t2)はt1またはt2で終わるすべてのストリームに一致します。 -
名前は最大 256 文字で、数字、英字、ハイフン (-)、アンダースコア (_)、アスタリスク (*)、等号 (=) を使用できます。
[透かしテンプレート]
設定済みのウォーターマークテンプレートを選択します。利用可能なテンプレートがない場合は、まずテンプレートを作成してください。詳細については、「ウォーターマークテンプレートの設定」をご参照ください。
-
-
[保存] をクリックして、ウォーターマークルールの設定を完了します。
説明ウォーターマークルールを設定した後、再生中にウォーターマークを表示するには、アップストリーミングを再起動する必要があります。
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("", 9001))
.setCredentials("", ""))
// HTTPS 接続の場合、証明書を設定するか、.ignoreSSL(true) を使用して証明書を無視する必要があります。
.x509TrustManagers(new X509TrustManager[]{})
.keyManagers(new KeyManager[]{})
.ignoreSSL(false)
.build();*/
// アクセスキー 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")) // Security Token Service (STS) トークンを使用します。
.build());
// クライアントを設定します。
AsyncClient client = AsyncClient.builder()
.region("") // リージョン 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("")
.name("")
.domain("")
.app("")
.stream("")
.templateId("")
// リクエストレベルの設定。HTTP リクエストパラメーターを上書きできます。
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
.build();
// API リクエストの戻り値を非同期で取得します。
CompletableFuture 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();
}
}-
は最大 256 文字で、数字、英字、ハイフン (-)、アンダースコア (_) を使用できます。アスタリスク (*) はサポートされていません。 -
ウォーターマークルールのマッチングは優先度に基づいています。特定の
(ワイルドカード * ではない) を持つルールが最初にマッチングされます。 -
パラメーターの詳細については、「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 秒に設定します (デフォルト: 10 秒)。
.responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウトを 10 秒に設定します (デフォルト: 20 秒)。
.maxConnections(128) // 接続プールサイズを 128 に設定します。
.maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを 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();
}
}-
<regionId> は、テンプレートのドメイン名に関連付けられたライブセンターのリージョンと一致する必要があります。リージョン 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 秒に設定します (デフォルト: 10 秒)。
.responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウトを 10 秒に設定します (デフォルト: 20 秒)。
.maxConnections(128) // 接続プールサイズを 128 に設定します。
.maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを 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();
}
}-
<regionId> は、テンプレートのドメイン名に関連付けられたライブセンターのリージョンと一致する必要があります。リージョン 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 秒に設定します (デフォルト: 10 秒)。
.responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウトを 10 秒に設定します (デフォルト: 20 秒)。
.maxConnections(128) // 接続プールサイズを 128 に設定します。
.maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを 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();
}
}-
<TemplateId> は、新しいテンプレートの ID または元のテンプレートの 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 秒に設定します (デフォルト: 10 秒)。
.responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウトを 10 秒に設定します (デフォルト: 20 秒)。
.maxConnections(128) // 接続プールサイズを 128 に設定します。
.maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを 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>")
.domain("<Your Domain>")
// リクエストレベルの設定を上書きします。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();
}
}AppName を指定して、それに関連付けられているすべてのウォーターマークルールを削除できます。詳細については、「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 秒に設定します (デフォルト: 10 秒)。
.responseTimeout(Duration.ofSeconds(10)) // レスポンスのタイムアウトを 10 秒に設定します (デフォルト: 20 秒)。
.maxConnections(128) // 接続プールサイズを 128 に設定します。
.maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを 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();
}
}-
<regionId> は、テンプレートのドメイン名に関連付けられたライブセンターのリージョンと一致する必要があります。リージョン ID のリストについては、「サービスエンドポイント」をご参照ください。
-
詳細については、「DeleteLiveStreamWatermark」 API リファレンスをご参照ください。
参考資料
Java SDK の使用方法については、「Java SDK 使用ガイド」をご参照ください。