All Products
Search
Document Center

ApsaraVideo Live:Watermark siaran langsung

Last Updated:Jun 23, 2026

ApsaraVideo Live memungkinkan Anda menambahkan watermark berupa gambar pada aliran siaran langsung untuk perlindungan hak cipta atau iklan.

Kasus penggunaan

Perlindungan hak cipta: Tambahkan watermark ke video siaran langsung Anda untuk mencegah penggunaan tanpa izin.

Iklan: Tampilkan label promosi atau detail acara pada aliran siaran langsung Anda.

Prasyarat

  • Untuk menggunakan fitur watermark, Anda memerlukan gambar watermark. Hanya watermark berbasis gambar yang didukung. Jika Anda membutuhkan watermark teks, buatlah gambar PNG dari teks tersebut. Gambar watermark dapat dalam format JPG atau PNG.

  • Anda harus memiliki URL untuk gambar watermark tersebut. ApsaraVideo Live mengambil gambar dari URL dan tidak mendukung unggahan langsung. Pastikan URL ini tetap dapat diakses.

Konfigurasi fitur

Untuk menggunakan watermark, konfigurasikan Watermark Templates dan Watermark Rules.

Templat watermark menentukan tampilan watermark, termasuk posisi, transparansi, dan URL gambarnya.

Aturan watermark mengaitkan AppName dan StreamName dengan templat watermark tertentu.

Konfigurasi templat watermark

Anda dapat mengonfigurasi templat watermark melalui konsol atau dengan memanggil API.

Konfigurasikan di Konsol

  1. Masuk ke Konsol ApsaraVideo Live.

  2. Pada panel navigasi sebelah kiri, pilih Feature Management > Watermarks. Pada halaman Watermarks, klik tab Watermark Templates.

  3. Pilih domain streaming yang ingin Anda konfigurasi.

  4. Klik Add Watermark Template dan konfigurasikan templat tersebut.

    image

    Pratinjau efek watermark di area pratinjau. Sesuaikan ukuran layar, ukuran watermark, dan posisinya untuk pratinjau real-time. Tabel berikut menjelaskan parameter templat.

    Parameter

    Deskripsi

    Template Name

    Nama templat watermark. Nama dapat terdiri dari maksimal 30 karakter dan boleh mengandung karakter Cina, huruf, angka, tanda hubung (-), dan garis bawah (_).

    Watermark Description

    Deskripsi watermark. Deskripsi dapat terdiri dari maksimal 128 karakter dan boleh mengandung karakter Cina, huruf, angka, serta karakter khusus.

    Watermark Material

    Masukkan URL gambar watermark. URL harus dimulai dengan http:// atau https://.

    Gunakan URL permanen dari Object Storage Service (OSS) atau sumber lain dengan otentikasi jangka panjang.

    Coordinate Origin

    Sudut jangkar watermark dalam video output. Offset watermark dihitung dari sudut ini. Nilai yang valid:

    • Kanan atas (default)

    • Kanan bawah

    • Kiri atas

    • Kiri bawah

    Preview Screen Size (Width × Height)

    Dimensi video aktual Anda, digunakan untuk mempratinjau posisi dan tampilan watermark. Satuan: piksel.

    Watermark Size (Width × Height)

    Ukuran gambar watermark. Lebar akan diskalakan secara otomatis berdasarkan tinggi.

    • Rentang nilai: [0, 4096].

    • Satuan: piksel.

    Horizontal Offset

    Offset horizontal watermark dari titik asal koordinat dalam video output.

    • Rentang nilai: [0, 4096].

    • Satuan: piksel.

    Vertical Offset

    Offset vertikal watermark dari titik asal koordinat dalam video output.

    • Rentang nilai: [0, 4096].

    • Satuan: piksel.

    Transparency

    Opasitas watermark. Nilai 0 berarti sepenuhnya transparan, dan 100 berarti sepenuhnya buram.

    • Rentang nilai: [0, 100].

    • Satuan: persen.

  5. Klik save untuk menyelesaikan konfigurasi templat watermark.

  6. Setelah menambahkan templat watermark, sebuah kotak dialog akan meminta Anda untuk menambahkan aturan watermark. Anda dapat mengklik Add untuk membuat aturan watermark untuk templat ini. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan watermark, lihat Konfigurasi aturan watermark.

    Catatan

    Setelah membuat templat watermark, Anda harus mengaitkannya dengan aturan watermark. AppName dan StreamName dalam aturan harus sesuai dengan yang ada di URL ingest. Untuk menerapkan perubahan, restart stream ingest.

Konfigurasi menggunakan API

Parameter templat watermark cukup kompleks. Kami menyarankan menggunakan antarmuka visual konsol untuk mempratinjau posisi watermark, bahkan saat mengonfigurasi templat secara terprogram.

  1. Pertama, tambahkan templat watermark di konsol ApsaraVideo Live.

  2. Setelah mengonfigurasi parameter, kueri konfigurasi templat tersebut.

    // File ini dibuat secara otomatis, jangan diedit. Terima kasih.
    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 {
    
            // Konfigurasi HttpClient.
            /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                    .connectionTimeout(Duration.ofSeconds(10)) // Periode timeout koneksi. Nilai default: 10 detik.
                    .responseTimeout(Duration.ofSeconds(10)) // Periode timeout respons. Nilai default: 20 detik.
                    .maxConnections(128) // Ukuran kolam koneksi.
                    .maxIdleTimeOut(Duration.ofSeconds(50)) // Periode timeout kolam koneksi. Nilai default: 30 detik.
                    // Konfigurasi proxy.
                    .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<your-proxy-hostname>", 9001))
                            .setCredentials("<your-proxy-username>", "<your-proxy-password>"))
                    // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                    .x509TrustManagers(new X509TrustManager[]{})
                    .keyManagers(new KeyManager[]{})
                    .ignoreSSL(false)
                    .build();*/
    
            // Konfigurasi kredensial untuk otentikasi, termasuk ID AccessKey, Rahasia AccessKey, dan token keamanan.
            StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                    // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                    .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                    //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token Layanan Keamanan (STS).
                    .build());
    
            // Konfigurasi klien.
            AsyncClient client = AsyncClient.builder()
                    .region("<your-region-id>") // ID wilayah.
                    //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                    .credentialsProvider(provider)
                    //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                    // Konfigurasi tingkat klien. Anda dapat menimpa endpoint dan parameter permintaan HTTP.
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                      // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                    .setEndpointOverride("live.aliyuncs.com")
                            //.setConnectTimeout(Duration.ofSeconds(30))
                    )
                    .build();
    
            // Setel parameter untuk permintaan API.
            DescribeLiveStreamWatermarksRequest describeLiveStreamWatermarksRequest = DescribeLiveStreamWatermarksRequest.builder()
                    .regionId("<your-region-id>")
                    .domain("<your-domain>")
                    .keyWord("<your-keyword>")
                    // Konfigurasi tingkat permintaan. Anda dapat menimpa parameter permintaan HTTP.
                    // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                    .build();
    
            // Dapatkan nilai kembali permintaan API secara asinkron.
            CompletableFuture<DescribeLiveStreamWatermarksResponse> response = client.describeLiveStreamWatermarks(describeLiveStreamWatermarksRequest);
            // Dapatkan nilai kembali permintaan API secara sinkron.
            DescribeLiveStreamWatermarksResponse resp = response.get();
            System.out.println(new Gson().toJson(resp));
            // Proses nilai kembali secara asinkron.
            /*response.thenAccept(resp -> {
                System.out.println(new Gson().toJson(resp));
            }).exceptionally(throwable -> { // Tangani pengecualian.
                System.out.println(throwable.getMessage());
                return null;
            });*/
    
            // Tutup klien.
            client.close();
        }
    
    }
    Catatan
    • Anda dapat mengkueri daftar templat watermark berdasarkan ID atau nama templat. Untuk informasi lebih lanjut, lihat referensi API DescribeLiveStreamWatermarks.

    • Anda dapat menyimpan informasi templat watermark yang dikueri sebagai templat di sistem bisnis Anda.

  3. Tambahkan konfigurasi templat watermark.

    // File ini dibuat secara otomatis, jangan diedit. Terima kasih.
    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 {
    
            // Konfigurasi HttpClient.
            /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                    .connectionTimeout(Duration.ofSeconds(10)) // Periode timeout koneksi. Nilai default: 10 detik.
                    .responseTimeout(Duration.ofSeconds(10)) // Periode timeout respons. Nilai default: 20 detik.
                    .maxConnections(128) // Ukuran kolam koneksi.
                    .maxIdleTimeOut(Duration.ofSeconds(50)) // Periode timeout kolam koneksi. Nilai default: 30 detik.
                    // Konfigurasi proxy.
                    .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<your-proxy-hostname>", 9001))
                            .setCredentials("<your-proxy-username>", "<your-proxy-password>"))
                    // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                    .x509TrustManagers(new X509TrustManager[]{})
                    .keyManagers(new KeyManager[]{})
                    .ignoreSSL(false)
                    .build();*/
    
            // Konfigurasi kredensial untuk otentikasi, termasuk ID AccessKey, Rahasia AccessKey, dan token keamanan.
            StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                    // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                    .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                    //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token Layanan Keamanan (STS).
                    .build());
    
            // Konfigurasi klien.
            AsyncClient client = AsyncClient.builder()
                    .region("<your-region-id>") // ID wilayah.
                    //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                    .credentialsProvider(provider)
                    //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                    // Konfigurasi tingkat klien. Anda dapat menimpa endpoint dan parameter permintaan HTTP.
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                      // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                    .setEndpointOverride("live.aliyuncs.com")
                            //.setConnectTimeout(Duration.ofSeconds(30))
                    )
                    .build();
    
            // Setel parameter untuk permintaan 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(255)
                    .offsetCorner("<your-offset-corner>")
                    .pictureUrl("<your-picture-url>")
                    // Konfigurasi tingkat permintaan. Anda dapat menimpa parameter permintaan HTTP.
                    // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                    .build();
    
            // Dapatkan nilai kembali permintaan API secara asinkron.
            CompletableFuture<AddLiveStreamWatermarkResponse> response = client.addLiveStreamWatermark(addLiveStreamWatermarkRequest);
            // Dapatkan nilai kembali permintaan API secara sinkron.
            AddLiveStreamWatermarkResponse resp = response.get();
            System.out.println(new Gson().toJson(resp));
            // Proses nilai kembali secara asinkron.
            /*response.thenAccept(resp -> {
                System.out.println(new Gson().toJson(resp));
            }).exceptionally(throwable -> { // Tangani pengecualian.
                System.out.println(throwable.getMessage());
                return null;
            });*/
    
            // Tutup klien.
            client.close();
        }
    
    }
    Catatan

    Untuk informasi lebih lanjut tentang parameter, lihat referensi API AddLiveStreamWatermark.

    Ini menyelesaikan konfigurasi templat watermark. Selanjutnya, Anda harus mengonfigurasi aturan watermark.

Penting
  • Watermark dan time shifting tidak dapat digunakan secara bersamaan.

Konfigurasi aturan watermark

Setelah membuat templat watermark, buat aturan watermark untuk menerapkannya.

Anda dapat mengonfigurasi aturan watermark di konsol atau menggunakan API.

Konfigurasi di konsol

  1. Masuk ke Konsol ApsaraVideo Live.

  2. Pada panel navigasi sebelah kiri, pilih Feature Management > Watermarks. Pada halaman Watermarks, klik tab Watermark Rules.

  3. Pilih domain streaming yang ingin Anda konfigurasi.

  4. Klik Add Watermark Rule.

    image

    Tabel berikut menjelaskan parameter aturan watermark.

    Parameter

    Deskripsi

    Rule Name

    Nama aturan watermark. Nama dapat terdiri dari maksimal 32 karakter dan boleh mengandung karakter Cina, huruf, angka, serta karakter khusus.

    Rule Description

    Deskripsi aturan watermark. Deskripsi dapat terdiri dari maksimal 128 karakter dan boleh mengandung karakter Cina, huruf, angka, serta karakter khusus.

    AppName

    Nama aplikasi tempat aliran tersebut berada. AppName harus sama dengan AppName dalam URL ingest agar templat watermark berlaku. Nama dapat terdiri dari maksimal 256 karakter dan boleh mengandung angka, huruf, tanda hubung (-), dan garis bawah (_).

    Stream Name

    Nama aliran siaran langsung. Aturan berikut berlaku:

    • Masukkan nama aliran spesifik untuk mencocokkan hanya aliran tersebut. Contoh: liveStreamA.

    • Anda dapat menggunakan pencocokan wildcard.

      Untuk mencocokkan semua aliran siaran langsung, masukkan hanya tanda bintang (*).

      Anda juga dapat melakukan pencocokan awalan atau akhiran. Item yang dicocokkan harus diapit tanda kurung (), dan beberapa item harus dipisahkan dengan tanda pipa vertikal |. Karakter wildcard bintang (*) hanya dapat digunakan di awal atau akhir string. Contoh: (abc|123)* mencocokkan semua aliran yang diawali dengan abc atau 123. *(t1|t2) mencocokkan semua aliran yang diakhiri dengan t1 atau t2.

    • Nama dapat terdiri dari maksimal 256 karakter dan boleh mengandung angka, huruf, tanda hubung (-), garis bawah (_), tanda bintang (*), dan tanda sama dengan (=).

    Watermark Templates

    Pilih templat watermark yang telah dikonfigurasi. Jika tidak tersedia templat, buat terlebih dahulu. Untuk informasi lebih lanjut, lihat Konfigurasi templat watermark.

  5. Klik save untuk menyelesaikan konfigurasi aturan watermark.

    Catatan

    Setelah mengonfigurasi aturan watermark, Anda harus me-restart stream ingest agar watermark muncul selama pemutaran.

Konfigurasi menggunakan API

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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 {

        // Konfigurasi HttpClient.
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Periode timeout koneksi. Nilai default: 10 detik.
                .responseTimeout(Duration.ofSeconds(10)) // Periode timeout respons. Nilai default: 20 detik.
                .maxConnections(128) // Ukuran kolam koneksi.
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Periode timeout kolam koneksi. Nilai default: 30 detik.
                // Konfigurasi proxy.
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<your-proxy-hostname>", 9001))
                        .setCredentials("<your-proxy-username>", "<your-proxy-password>"))
                // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Konfigurasi kredensial untuk otentikasi, termasuk ID AccessKey, Rahasia AccessKey, dan token keamanan.
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token Layanan Keamanan (STS).
                .build());

        // Konfigurasi klien.
        AsyncClient client = AsyncClient.builder()
                .region("<your-region-id>") // ID wilayah.
                //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                // Konfigurasi tingkat klien. Anda dapat menimpa endpoint dan parameter permintaan HTTP.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Setel parameter untuk permintaan 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>")
                // Konfigurasi tingkat permintaan. Anda dapat menimpa parameter permintaan HTTP.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Dapatkan nilai kembali permintaan API secara asinkron.
        CompletableFuture<AddLiveStreamWatermarkRuleResponse> response = client.addLiveStreamWatermarkRule(addLiveStreamWatermarkRuleRequest);
        // Dapatkan nilai kembali permintaan API secara sinkron.
        AddLiveStreamWatermarkRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Proses nilai kembali secara asinkron.
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Menangani pengecualian.
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Tutup klien.
        client.close();
    }

}
Catatan
  • <AppName> dapat terdiri dari maksimal 256 karakter dan boleh mengandung angka, huruf, tanda hubung (-), dan garis bawah (_). Tanda bintang (*) tidak didukung.

  • Pencocokan aturan watermark didasarkan pada prioritas. Aturan dengan <StreamName> spesifik (bukan wildcard *) akan dicocokkan terlebih dahulu.

  • Untuk informasi lebih lanjut tentang parameter, lihat referensi API AddLiveStreamWatermarkRule.

Gunakan fitur ini

Setelah mengonfigurasi templat dan aturan watermark, mulai stream ingest dan pemutaran untuk menerapkan watermark. Gambar berikut menunjukkan video siaran langsung yang telah diberi watermark.

image

Watermark pada contoh ini adalah gambar PNG berbasis teks.

Transparansi watermark

Kode berikut menunjukkan cara mengatur transparansi watermark:

// Transparansi watermark. Nilai yang lebih kecil menunjukkan transparansi yang lebih tinggi. Nilai valid: 0 hingga 255. Nilai default: 255.
addLiveStreamWatermarkRequest.setTransparency(255);

Sebagai contoh, mengatur transparansi ke 128 menghasilkan video seperti yang ditunjukkan di bawah ini:

image

Perbarui watermark

Kode contoh untuk memperbarui templat watermark

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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 {

        // Konfigurasi HttpClient.
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Atur timeout koneksi. Default adalah 10 detik.
                .responseTimeout(Duration.ofSeconds(10)) // Atur timeout respons. Default adalah 20 detik.
                .maxConnections(128) // Atur ukuran kolam koneksi.
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Atur timeout kolam koneksi. Default adalah 30 detik.
                // Konfigurasi proxy.
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Konfigurasi kredensial, termasuk ID AccessKey, Rahasia AccessKey, dan token.
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token STS.
                .build());

        // Konfigurasi klien.
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // ID wilayah.
                //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                // Timpa konfigurasi tingkat klien. Anda dapat mengatur endpoint, parameter permintaan HTTP, dan lainnya.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Setel parameter untuk permintaan API.
        UpdateLiveStreamWatermarkRequest updateLiveStreamWatermarkRequest = UpdateLiveStreamWatermarkRequest.builder()
                .regionId("<Your RegionId>")
                .templateId("<Your templateId>")
                .name("<Your name>")
                .description("<Your description>")
                // Timpa konfigurasi tingkat permintaan. Anda dapat mengatur parameter permintaan HTTP dan lainnya.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Dapatkan nilai kembali permintaan API secara asinkron.
        CompletableFuture<UpdateLiveStreamWatermarkResponse> response = client.updateLiveStreamWatermark(updateLiveStreamWatermarkRequest);
        // Dapatkan nilai kembali permintaan API secara sinkron.
        UpdateLiveStreamWatermarkResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Proses nilai kembali secara asinkron.
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Tangani pengecualian.
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Tutup klien.
        client.close();
    }

}
Catatan
  • <regionId> harus sesuai dengan wilayah pusat siaran langsung yang terkait dengan nama domain templat. Untuk daftar ID wilayah, lihat service endpoint.

  • Untuk informasi lebih lanjut tentang parameter, lihat referensi API UpdateLiveStreamWatermark.

Kode contoh untuk memperbarui aturan watermark

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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 {

        // Konfigurasi HttpClient.
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Atur timeout koneksi. Default adalah 10 detik.
                .responseTimeout(Duration.ofSeconds(10)) // Atur timeout respons. Default adalah 20 detik.
                .maxConnections(128) // Atur ukuran kolam koneksi.
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Atur timeout kolam koneksi. Default adalah 30 detik.
                // Konfigurasi proxy.
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Konfigurasi kredensial, termasuk ID AccessKey, Rahasia AccessKey, dan token.
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token STS.
                .build());

        // Konfigurasi klien.
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // ID wilayah.
                //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                // Timpa konfigurasi tingkat klien. Anda dapat mengatur endpoint, parameter permintaan HTTP, dan lainnya.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Setel parameter untuk permintaan API.
        UpdateLiveStreamWatermarkRuleRequest updateLiveStreamWatermarkRuleRequest = UpdateLiveStreamWatermarkRuleRequest.builder()
                .regionId("<Your RegionId>")
                .ruleId("")
                // Timpa konfigurasi tingkat permintaan. Anda dapat mengatur parameter permintaan HTTP dan lainnya.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Dapatkan nilai kembali permintaan API secara asinkron.
        CompletableFuture<UpdateLiveStreamWatermarkRuleResponse> response = client.updateLiveStreamWatermarkRule(updateLiveStreamWatermarkRuleRequest);
        // Dapatkan nilai kembali permintaan API secara sinkron.
        UpdateLiveStreamWatermarkRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Proses nilai kembali secara asinkron.
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Tangani pengecualian.
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Tutup klien.
        client.close();
    }

}
Catatan
  • <regionId> harus sesuai dengan wilayah pusat siaran langsung yang terkait dengan nama domain templat. Untuk daftar ID wilayah, lihat service endpoint.

  • Anda dapat memperbarui properti lain dari aturan tersebut. Untuk informasi lebih lanjut, lihat referensi API UpdateLiveStreamWatermarkRule.

Perubahan pada templat atau aturan watermark hanya berlaku setelah Anda me-restart stream ingest. Untuk memperbarui watermark selama siaran langsung tanpa me-restart, gunakan fitur dynamic watermark update.

Panggil API DynamicUpdateWaterMarkStreamRule untuk melakukan pembaruan ini.

Kode contoh untuk pembaruan watermark dinamis

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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 {

        // Konfigurasi HttpClient.
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Atur timeout koneksi. Default adalah 10 detik.
                .responseTimeout(Duration.ofSeconds(10)) // Atur timeout respons. Default adalah 20 detik.
                .maxConnections(128) // Atur ukuran kolam koneksi.
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Atur timeout kolam koneksi. Default adalah 30 detik.
                // Konfigurasi proxy.
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Konfigurasi kredensial, termasuk ID AccessKey, Rahasia AccessKey, dan token.
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token STS.
                .build());

        // Konfigurasi klien.
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // ID wilayah.
                //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                // Timpa konfigurasi tingkat klien. Anda dapat mengatur endpoint, parameter permintaan HTTP, dan lainnya.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Setel parameter untuk permintaan API.
        DynamicUpdateWaterMarkStreamRuleRequest dynamicUpdateWaterMarkStreamRuleRequest = DynamicUpdateWaterMarkStreamRuleRequest.builder()
                .regionId("<Your RegionId>")
                .domain("<Your Domain>")
                .app("<Your App>")
                .stream("<Your Stream>")
                .templateId("<Your TemplateId>")
                // Timpa konfigurasi tingkat permintaan. Anda dapat mengatur parameter permintaan HTTP dan lainnya.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Dapatkan nilai kembali permintaan API secara asinkron.
        CompletableFuture<DynamicUpdateWaterMarkStreamRuleResponse> response = client.dynamicUpdateWaterMarkStreamRule(dynamicUpdateWaterMarkStreamRuleRequest);
        // Dapatkan nilai kembali permintaan API secara sinkron.
        DynamicUpdateWaterMarkStreamRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Proses nilai kembali secara asinkron.
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Tangani pengecualian.
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Tutup klien.
        client.close();
    }

}
Penting
  • <TemplateId> dapat berupa ID templat baru atau templat asli. Memanggil metode ini memperbarui watermark agar sesuai dengan konfigurasi terbaru dari templat yang ditentukan, termasuk gambar, transparansi, dan posisinya.

  • Saat ini, pembaruan dinamis tidak didukung untuk aturan watermark yang menggunakan pencocokan kabur untuk nama aliran.

Hapus templat watermark

Sebelum menghapus Watermark Templates, hapus terlebih dahulu semua aturan watermark yang terkait.

Kode contoh untuk menghapus aturan watermark

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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 {

        // Konfigurasi HttpClient.
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Atur timeout koneksi. Default adalah 10 detik.
                .responseTimeout(Duration.ofSeconds(10)) // Atur timeout respons. Default adalah 20 detik.
                .maxConnections(128) // Atur ukuran kolam koneksi.
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Atur timeout kolam koneksi. Default adalah 30 detik.
                // Konfigurasi proxy.
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Konfigurasi kredensial, termasuk ID AccessKey, Rahasia AccessKey, dan token.
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token STS.
                .build());

        // Konfigurasi klien.
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // ID wilayah.
                //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                // Timpa konfigurasi tingkat klien. Anda dapat mengatur endpoint, parameter permintaan HTTP, dan lainnya.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Setel parameter untuk permintaan API.
        DeleteLiveStreamWatermarkRuleRequest deleteLiveStreamWatermarkRuleRequest = DeleteLiveStreamWatermarkRuleRequest.builder()
                .regionId("<Your RegionId>")
                .domain("<Your Domain>")
                // Timpa konfigurasi tingkat permintaan. Anda dapat mengatur parameter permintaan HTTP dan lainnya.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Dapatkan nilai kembali permintaan API secara asinkron.
        CompletableFuture<DeleteLiveStreamWatermarkRuleResponse> response = client.deleteLiveStreamWatermarkRule(deleteLiveStreamWatermarkRuleRequest);
        // Dapatkan nilai kembali permintaan API secara sinkron.
        DeleteLiveStreamWatermarkRuleResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Proses nilai kembali secara asinkron.
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Tangani pengecualian.
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Tutup klien.
        client.close();
    }

}
Catatan

Anda dapat menentukan AppName untuk menghapus semua aturan watermark yang terkait dengannya. Untuk informasi lebih lanjut, lihat referensi API DeleteLiveStreamWatermarkRule.

Kode contoh untuk menghapus templat watermark

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
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 {

        // Konfigurasi HttpClient.
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Atur timeout koneksi. Default adalah 10 detik.
                .responseTimeout(Duration.ofSeconds(10)) // Atur timeout respons. Default adalah 20 detik.
                .maxConnections(128) // Atur ukuran kolam koneksi.
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Atur timeout kolam koneksi. Default adalah 30 detik.
                // Konfigurasi proxy.
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // Untuk koneksi HTTPS, Anda harus mengonfigurasi sertifikat atau mengabaikannya dengan .ignoreSSL(true).
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Konfigurasi kredensial, termasuk ID AccessKey, Rahasia AccessKey, dan token.
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // Gunakan token STS.
                .build());

        // Konfigurasi klien.
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // ID wilayah.
                //.httpClient(httpClient) // Gunakan HttpClient yang telah dikonfigurasi. Jika tidak, HttpClient Apache default akan digunakan.
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan.
                // Timpa konfigurasi tingkat klien. Anda dapat mengatur endpoint, parameter permintaan HTTP, dan lainnya.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.aliyun.com/product/live.
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Setel parameter untuk permintaan API.
        DeleteLiveStreamWatermarkRequest deleteLiveStreamWatermarkRequest = DeleteLiveStreamWatermarkRequest.builder()
                .regionId("<Your RegionId>")
                .templateId("<Your TemplateId>")
                // Timpa konfigurasi tingkat permintaan. Anda dapat mengatur parameter permintaan HTTP dan lainnya.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Dapatkan nilai kembali permintaan API secara asinkron.
        CompletableFuture<DeleteLiveStreamWatermarkResponse> response = client.deleteLiveStreamWatermark(deleteLiveStreamWatermarkRequest);
        // Dapatkan nilai kembali permintaan API secara sinkron.
        DeleteLiveStreamWatermarkResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Proses nilai kembali secara asinkron.
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Tangani pengecualian.
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Tutup klien.
        client.close();
    }

}
Catatan
  • <regionId> harus sesuai dengan wilayah pusat siaran langsung yang terkait dengan nama domain templat. Untuk daftar ID wilayah, lihat service endpoint.

  • Untuk informasi lebih lanjut, lihat referensi API DeleteLiveStreamWatermark.

Referensi

Untuk informasi tentang penggunaan Java SDK, lihat panduan penggunaan Java SDK.