All Products
Search
Document Center

AI Guardrails:SDK dan integrasi Moderasi Video 2.0

Last Updated:May 27, 2026

Moderasi Video 2.0 mendukung integrasi melalui SDK atau permintaan HTTPS native. Penggunaan SDK direkomendasikan karena secara otomatis menangani detail seperti verifikasi signature dan format permintaan. Topik ini menjelaskan cara mengintegrasikan Moderasi Video 2.0.

Langkah 1: Aktifkan layanan

Buka halaman Aktifkan layanan Content Moderation 2.0 untuk mengaktifkan layanan Content Moderation 2.0. Setelah Anda mengintegrasikan dan menggunakan API, biaya akan dikenakan secara otomatis berdasarkan penggunaan. Untuk informasi selengkapnya, lihat penagihan.

Setelah layanan Content Moderation 2.0 diaktifkan, metode penagihan default adalah bayar sesuai penggunaan. Biaya diselesaikan harian berdasarkan penggunaan aktual. Jika Anda tidak memanggil layanan, tidak ada biaya yang dikenakan.

Langkah 2: Berikan izin kepada pengguna RAM

Sebelum menggunakan SDK atau API, Anda harus memberikan izin kepada pengguna RAM serta membuat Pasangan Kunci Akses (AccessKey pair) untuk mengotentikasi panggilan API Alibaba Cloud. Untuk informasi selengkapnya, lihat Mendapatkan Pasangan Kunci Akses.

Berikan izin kepada pengguna RAM

  1. Login ke Konsol RAM menggunakan Akun Alibaba Cloud Anda.

  2. Buat pengguna RAM. Untuk detailnya, lihat Buat pengguna RAM.

  3. Berikan kebijakan sistem AliyunYundunGreenWebFullAccess kepada pengguna RAM. Kebijakan ini memberikan akses penuh ke Content Moderation. Untuk detailnya, lihat Kelola izin pengguna RAM.

    Pengguna RAM kini dapat memanggil API Content Moderation.

Langkah 3: Integrasikan moderasi video

Layanan moderasi video tersedia di wilayah berikut:

Wilayah

Titik akhir publik

Titik akhir internal

Layanan yang didukung

Asia Pasifik SE 1 (Singapura)

https://green-cip.ap-southeast-1.aliyuncs.com

https://green-cip-vpc.ap-southeast-1.aliyuncs.com

videoDetection_global, videoDetectionByVL_global, liveStreamDetection_global, liveStreamDetectionByVL_global

AS Timur 1 (Virginia)

https://green-cip.us-east-1.aliyuncs.com

https://green-cip-vpc.us-east-1.aliyuncs.com

videoDetection_global, liveStreamDetection_global

AS Barat 1 (Silicon Valley)

https://green-cip.us-west-1.aliyuncs.com

Tidak tersedia

Eropa Tengah 1 (Frankfurt)

https://green-cip.eu-central-1.aliyuncs.com

Tidak tersedia

Catatan

Untuk mendapatkan kode contoh SDK dalam bahasa lain, gunakan alat debugging online di OpenAPI Developer Portal untuk mendebug operasi API. Alat ini secara otomatis menghasilkan kode contoh SDK. Operasi API berikut tersedia untuk debugging online:

SDK Alibaba Cloud membuat kredensial default dengan membaca variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Saat Anda memanggil operasi API, program membaca AccessKey dari variabel ini dan secara otomatis menyelesaikan otentikasi. Sebelum menggunakan kode contoh SDK, Anda harus mengonfigurasi variabel lingkungan tersebut. Untuk informasi selengkapnya, lihat Konfigurasi kredensial otentikasi.

Untuk detail bidang API, lihat API Moderasi File Video 2.0 dan API Moderasi Aliran Langsung 2.0.

Java SDK

Fitur ini memerlukan Java 1.8 atau versi lebih baru.

Untuk kode sumbernya, lihat kode sumber Java SDK atau kode sumber Java SDK (jalur OSS).

Layanan ini mendukung tiga jenis deteksi video.

Moderasi video publik

Skenario

Layanan Moderasi Video 2.0 dapat mengambil dan memoderasi video yang tersedia melalui URL publik.

  1. Tambahkan dependensi berikut ke file pom.xml untuk menggunakan SDK di proyek Maven Anda.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>3.3.3</version>
    </dependency>
  2. Integrasikan Java SDK.

    • Mengirimkan tugas deteksi video

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationRequest;
      import com.aliyun.green20220302.models.VideoModerationResponse;
      import com.aliyun.green20220302.models.VideoModerationResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class VideoModerationDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
             /**
               * Pasangan AccessKey dari akun Alibaba Cloud memberikan akses penuh ke API. Untuk keamanan, kami merekomendasikan menggunakan pengguna RAM untuk panggilan API dan O&M harian.
               * Metode umum untuk mendapatkan kredensial dari variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // Konfigurasikan wilayah dan titik akhir Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout baca dalam milidetik.
              config.setReadTimeout(6000);
              // Timeout koneksi dalam milidetik.
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              serviceParameters.put("url", "https://xxx.oss.aliyuncs.com/xxx.mp4");
      
              VideoModerationRequest videoModerationRequest = new VideoModerationRequest();
              // Tentukan jenis layanan. Untuk wilayah di luar daratan Tiongkok, gunakan "videoDetection_global".
              videoModerationRequest.setService("videoDetection_global");
              videoModerationRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationResponse response = client.videoModeration(videoModerationRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationResponseBody result = response.getBody();
                      System.out.println(JSON.toJSONString(result));
                      System.out.println("requestId = " + result.getRequestId());
                      System.out.println("code = " + result.getCode());
                      System.out.println("msg = " + result.getMessage());
                      Integer code = result.getCode();
                      if (200 == code) {
                          VideoModerationResponseBody.VideoModerationResponseBodyData data = result.getData();
                          System.out.println("taskId = [" + data.getTaskId() + "]");
                      } else {
                          System.out.println("Moderasi video gagal. Code: " + code);
                      }
                  } else {
                      System.out.println("Permintaan gagal. Status: " + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Mengambil hasil tugas deteksi video

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationResultRequest;
      import com.aliyun.green20220302.models.VideoModerationResultResponse;
      import com.aliyun.green20220302.models.VideoModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      public class VideoModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Pasangan AccessKey dari akun Alibaba Cloud memberikan akses penuh ke API. Untuk keamanan, kami merekomendasikan menggunakan pengguna RAM untuk panggilan API dan O&M harian.
               * Metode umum untuk mendapatkan kredensial dari variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // Konfigurasikan wilayah dan titik akhir Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout baca dalam milidetik.
              config.setReadTimeout(6000);
              // Timeout koneksi dalam milidetik.
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // Tentukan taskId yang dikembalikan dari permintaan pengiriman.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      
              VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
              // Tentukan jenis layanan. Untuk wilayah di luar daratan Tiongkok, gunakan "videoDetection_global".
              videoModerationResultRequest.setService("videoDetection_global");
              videoModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationResultResponse response = client.videoModerationResult(videoModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          VideoModerationResultResponseBody.VideoModerationResultResponseBodyData data = result.getData();
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("riskLevel = " + data.getRiskLevel());
                          System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult()));
                          System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult()));
                      } else {
                          System.out.println("Gagal mengambil hasil moderasi video. Code: " + result.getCode());
                      }
                  } else {
                      System.out.println("Permintaan gagal. Status: " + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Membatalkan tugas deteksi video

      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationCancelRequest;
      import com.aliyun.green20220302.models.VideoModerationCancelResponse;
      import com.aliyun.green20220302.models.VideoModerationCancelResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class VideoModerationCancelDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Pasangan AccessKey dari akun Alibaba Cloud memberikan akses penuh ke API. Untuk keamanan, kami merekomendasikan menggunakan pengguna RAM untuk panggilan API dan O&M harian.
               * Metode umum untuk mendapatkan kredensial dari variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // Konfigurasikan wilayah dan titik akhir Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout baca dalam milidetik.
              config.setReadTimeout(6000);
              // Timeout koneksi dalam milidetik.
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // Tentukan taskId dari tugas yang akan dibatalkan.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
              VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
              
              videoModerationCancelRequest.setService("videoDetection_global");
              videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationCancelResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 != result.getCode()) {
                          System.out.println("Gagal membatalkan tugas moderasi video. Code: " + result.getCode());
                      }
                  } else {
                      System.out.println("Permintaan gagal. Status: " + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

Moderasi video lokal

Kasus Penggunaan

Jika Anda perlu memoderasi video yang disimpan di mesin lokal dan tidak memiliki URL publik, unggah video tersebut ke bucket OSS yang disediakan oleh Content Moderation. Layanan Moderasi Video V2.0 kemudian dapat langsung mengakses OSS untuk mengambil video guna dimoderasi.

  1. Tambahkan dependensi berikut ke pom.xml untuk menggunakan SDK di proyek Maven.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>3.3.3</version>
    </dependency>

    Instal SDK OSS:

    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.16.3</version>
    </dependency>
  2. Integrasikan Java SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      import com.alibaba.fastjson.JSON;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeUploadTokenResponse;
      import com.aliyun.green20220302.models.DescribeUploadTokenResponseBody;
      import com.aliyun.green20220302.models.VideoModerationRequest;
      import com.aliyun.green20220302.models.VideoModerationResponse;
      import com.aliyun.green20220302.models.VideoModerationResponseBody;
      import com.aliyun.oss.OSS;
      import com.aliyun.oss.OSSClientBuilder;
      import com.aliyun.oss.model.PutObjectRequest;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      import java.io.File;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.UUID;
      
      public class LocalVideoModeration {
      
          // Menentukan apakah layanan diterapkan di VPC.
          public static boolean isVPC = false;
      
          // Peta titik akhir ke token unggah file.
          public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();
      
          // Klien untuk permintaan unggah file.
          public static OSS ossClient = null;
      
          /**
           * Membuat klien untuk mengirim permintaan.
           *
           * @param accessKeyId
           * @param accessKeySecret
           * @param endpoint
           * @return
           * @throws Exception
           */
          public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              Config config = new Config();
              config.setAccessKeyId(accessKeyId);
              config.setAccessKeySecret(accessKeySecret);
              // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
              config.setEndpoint(endpoint);
              return new Client(config);
          }
      
          /**
           * Membuat klien untuk permintaan unggah file.
           *
           * @param tokenData
           * @param isVPC
           */
          public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
              // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang.
              if (isVPC) {
                  ossClient = new OSSClientBuilder().build(tokenData.ossInternalEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
              } else {
                  ossClient = new OSSClientBuilder().build(tokenData.ossInternetEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
              }
          }
      
          /**
           * Mengunggah file.
           *
           * @param filePath
           * @param tokenData
           * @return
           * @throws Exception
           */
          public static String uploadFile(String filePath, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData) throws Exception {
              String[] split = filePath.split("\\.");
              String objectName;
              if (split.length > 1) {
                  objectName = tokenData.getFileNamePrefix() + UUID.randomUUID() + "." + split[split.length - 1];
              } else {
                  objectName = tokenData.getFileNamePrefix() + UUID.randomUUID();
              }
              PutObjectRequest putObjectRequest = new PutObjectRequest(tokenData.getBucketName(), objectName, new File(filePath));
              ossClient.putObject(putObjectRequest);
              return objectName;
          }
      
          public static VideoModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              // Catatan: Untuk meningkatkan kinerja moderasi, gunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang.
              Client client = createClient(accessKeyId, accessKeySecret, endpoint);
              RuntimeOptions runtime = new RuntimeOptions();
      
              // Jalur lengkap ke file lokal, misalnya, D:\\localPath\\exampleFile.mp4.
              String filePath = "D:\\localPath\\exampleFile.mp4";
              // Dapatkan token unggah file.
              if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) {
                  DescribeUploadTokenResponse tokenResponse = client.describeUploadToken();
                  tokenMap.put(endpoint, tokenResponse.getBody().getData());
              }
              // Klien untuk permintaan unggah file.
              getOssClient(tokenMap.get(endpoint), isVPC);
      
              // Unggah file.
              String objectName = uploadFile(filePath, tokenMap.get(endpoint));
      
              // Bangun parameter moderasi.
              Map<String, String> serviceParameters = new HashMap<>();
              // Informasi unggah file.
              serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName());
              serviceParameters.put("ossObjectName", objectName);
              serviceParameters.put("dataId", UUID.randomUUID().toString());
      
              VideoModerationRequest request = new VideoModerationRequest();
              // Layanan moderasi. Tetapkan nilai ke videoDetection_global.
              request.setService("videoDetection_global");
              request.setServiceParameters(JSON.toJSONString(serviceParameters));
      
              VideoModerationResponse response = null;
              try {
                  response = client.videoModerationWithOptions(request, runtime);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return response;
          }
      
          public static void main(String[] args) throws Exception {
              /**
               * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M harian.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              String accessKeyId = "Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.";
              String accessKeySecret = "Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.";
              // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
              VideoModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com");
              try {
                  // Cetak hasil moderasi.
                  if (response != null) {
                      if (response.getStatusCode() == 200) {
                          VideoModerationResponseBody body = response.getBody();
                          System.out.println(JSON.toJSONString(body));
                          System.out.println("requestId = " + body.getRequestId());
                          System.out.println("code = " + body.getCode());
                          System.out.println("msg = " + body.getMessage());
                          Integer code = body.getCode();
                          if (200 == code) {
                              VideoModerationResponseBody.VideoModerationResponseBodyData data = body.getData();
                              System.out.println("taskId = [" + data.getTaskId() + "]");
                          } else {
                              System.out.println("moderasi video tidak berhasil. code:" + code);
                          }
                      } else {
                          System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
                      }
                  }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              } }
    • Kode contoh untuk mengambil hasil tugas moderasi video

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationResultRequest;
      import com.aliyun.green20220302.models.VideoModerationResultResponse;
      import com.aliyun.green20220302.models.VideoModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      public class VideoModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M harian.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.");
              config.setAccessKeySecret("Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.");
              // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout baca dalam milidetik (ms).
              config.setReadTimeout(6000);
              // Timeout koneksi dalam milidetik (ms).
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // ID tugas yang dikembalikan saat pengiriman.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      
              VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
              // Layanan moderasi. Tetapkan nilai ke videoDetection_global.
              videoModerationResultRequest.setService("videoDetection_global");
              videoModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationResultResponse response = client.videoModerationResult(videoModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          VideoModerationResultResponseBody.VideoModerationResultResponseBodyData data = result.getData();
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("riskLevel = " + data.getRiskLevel());
                          System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult()));
                          System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult()));
                      } else {
                          System.out.println("hasil moderasi video tidak berhasil. code:" + result.getCode());
                      }
                  } else {
                      System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Kode contoh untuk membatalkan tugas moderasi video

      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationCancelRequest;
      import com.aliyun.green20220302.models.VideoModerationCancelResponse;
      import com.aliyun.green20220302.models.VideoModerationCancelResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class VideoModerationCancelDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M harian.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.");
              config.setAccessKeySecret("Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.");
              // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout baca dalam milidetik (ms).
              config.setReadTimeout(6000);
              // Timeout koneksi dalam milidetik (ms).
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // ID tugas yang dikembalikan saat pengiriman.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
              VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
              
              videoModerationCancelRequest.setService("videoDetection_global");
              videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationCancelResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 != result.getCode()) {
                          System.out.println("pembatalan moderasi video tidak berhasil. code:" + result.getCode());
                      }
                  } else {
                      System.out.println("respons tidak berhasil. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

Moderasi video di OSS

Kasus penggunaan

Untuk memoderasi file video yang sudah disimpan di OSS, buat peran layanan untuk memberikan akses layanan Content Moderation ke file tersebut. Layanan Moderasi Video 2.0 menggunakan peran ini untuk mengambil dan memoderasi file. Kunjungi halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Tambahkan dependensi berikut ke file pom.xml proyek Anda untuk menggunakan SDK.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>3.3.3</version>
    </dependency>
  2. Integrasikan Java SDK.

    • Kirim tugas moderasi video

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationRequest;
      import com.aliyun.green20220302.models.VideoModerationResponse;
      import com.aliyun.green20220302.models.VideoModerationResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class VideoModerationDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
             /**
               * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk panggilan API atau O&M rutin.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.");
              config.setAccessKeySecret("Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.");
              // Ubah wilayah dan titik akhir berdasarkan penerapan aktual Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout koneksi dalam milidetik (ms).
              config.setReadTimeout(6000);
              // Timeout baca dalam milidetik (ms).
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              serviceParameters.put("ossBucketName", "bucket_01");
              serviceParameters.put("ossObjectName", "20240307/07/28/test.flv");
              serviceParameters.put("ossRegionId", "ap-southeast-1");
      
              VideoModerationRequest videoModerationRequest = new VideoModerationRequest();
              // Tentukan layanan moderasi. Tetapkan nilai ke videoDetection_global.
              videoModerationRequest.setService("videoDetection_global");
              videoModerationRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationResponse response = client.videoModeration(videoModerationRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationResponseBody result = response.getBody();
                      System.out.println(JSON.toJSONString(result));
                      System.out.println("requestId = " + result.getRequestId());
                      System.out.println("code = " + result.getCode());
                      System.out.println("msg = " + result.getMessage());
                      Integer code = result.getCode();
                      if (200 == code) {
                          VideoModerationResponseBody.VideoModerationResponseBodyData data = result.getData();
                          System.out.println("taskId = [" + data.getTaskId() + "]");
                      } else {
                          System.out.println("moderasi video gagal. code:" + code);
                      }
                  } else {
                      System.out.println("permintaan gagal. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Ambil hasil moderasi

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationResultRequest;
      import com.aliyun.green20220302.models.VideoModerationResultResponse;
      import com.aliyun.green20220302.models.VideoModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      public class VideoModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk panggilan API atau O&M rutin.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.");
              config.setAccessKeySecret("Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.");
              // Ubah wilayah dan titik akhir berdasarkan penerapan aktual Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout koneksi dalam milidetik (ms).
              config.setReadTimeout(6000);
              // Timeout baca dalam milidetik (ms).
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // ID tugas yang akan dikueri. ID ini dikembalikan saat Anda mengirimkan tugas moderasi.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      
              VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
              // Layanan moderasi yang ingin Anda gunakan. Tetapkan nilai ke videoDetection_global.
              videoModerationResultRequest.setService("videoDetection_global");
              videoModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationResultResponse response = client.videoModerationResult(videoModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          VideoModerationResultResponseBody.VideoModerationResultResponseBodyData data = result.getData();
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("riskLevel = " + data.getRiskLevel());
                          System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult()));
                          System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult()));
                      } else {
                          System.out.println("gagal mendapatkan hasil moderasi video. code:" + result.getCode());
                      }
                  } else {
                      System.out.println("permintaan gagal. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Batalkan tugas moderasi video

      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.VideoModerationCancelRequest;
      import com.aliyun.green20220302.models.VideoModerationCancelResponse;
      import com.aliyun.green20220302.models.VideoModerationCancelResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class VideoModerationCancelDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk panggilan API atau O&M rutin.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Metode 1:
               *     Dapatkan ID AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * Metode 2:
               *     Dapatkan ID AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     Dapatkan rahasia AccessKey pengguna RAM: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.");
              config.setAccessKeySecret("Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.");
              // Ubah wilayah dan titik akhir berdasarkan penerapan aktual Anda.
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // Timeout koneksi dalam milidetik (ms).
              config.setReadTimeout(6000);
              // Timeout baca dalam milidetik (ms).
              config.setConnectTimeout(3000);
              // Atur proxy HTTP.
              //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
              // Atur proxy HTTPS.
              //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // ID tugas yang akan dibatalkan. ID ini dikembalikan saat Anda mengirimkan tugas moderasi.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
              VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
              
              videoModerationCancelRequest.setService("videoDetection_global");
              videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest);
                  if (response.getStatusCode() == 200) {
                      VideoModerationCancelResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 != result.getCode()) {
                          System.out.println("pembatalan moderasi video gagal. code:" + result.getCode());
                      }
                  } else {
                      System.out.println("permintaan gagal. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

Python SDK

Diperlukan Python 3.6 atau versi lebih baru.

Untuk kode sumbernya, lihat kode sumber Python SDK.

Layanan ini mendukung tiga jenis moderasi video berikut.

Video yang dapat diakses publik

Kasus penggunaan

Jika video yang ingin Anda moderasi dapat diakses melalui URL publik, layanan Moderasi Video 2.0 dapat mengambil dan memoderasi file tersebut.

  1. Jalankan perintah berikut untuk menginstal paket:

    pip install alibabacloud_green20220302==3.2.4
  2. Integrasikan Python SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
                  # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
                  access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                  access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                  # Timeout koneksi dalam milidetik.
                  connect_timeout=3000,
                  # Timeout baca dalam milidetik.
                  read_timeout=6000,
                  # Wilayah layanan dan titik akhir. Tentukan berdasarkan kebutuhan bisnis Anda.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'url': 'https://xxx.oss.aliyuncs.com/xxx.mp4'
      }
      videoModerationRequest = models.VideoModerationRequest(
          # Layanan moderasi. Tetapkan nilai ke 'videoDetection_global'.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation(videoModerationRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Ambil hasil moderasi video

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
                  # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
                  access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                  access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                  # Timeout koneksi dalam milidetik.
                  connect_timeout=3000,
                  # Timeout baca dalam milidetik.
                  read_timeout=6000,
                  # Wilayah layanan dan titik akhir. Tentukan berdasarkan kebutuhan bisnis Anda.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas moderasi video, dikembalikan saat pengiriman.
      serviceParameters = {
          "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
      }
      videoModerationResultRequest = models.VideoModerationResultRequest(
          # Layanan moderasi. Tetapkan nilai ke 'videoDetection_global'.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_result(videoModerationResultRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
          # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
          # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # Timeout koneksi dalam milidetik.
          connect_timeout=10000,
          # Timeout baca dalam milidetik.
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat pengiriman.
      serviceParameters = {
          "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
      }
      videoModerationCancelRequest = models.VideoModerationCancelRequest(
          # Layanan moderasi.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_cancel(videoModerationCancelRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

Video lokal

Kasus penggunaan

Jika video yang ingin Anda moderasi berada di mesin lokal dan tidak memiliki URL publik, unggah ke bucket Object Storage Service (OSS) yang disediakan oleh Content Moderation. Layanan Moderasi Video 2.0 dapat langsung mengakses OSS untuk mengambil dan memoderasi video tersebut.

  1. Jalankan perintah berikut untuk menginstal paket:

    pip install alibabacloud_green20220302==3.2.4

    Instal SDK OSS:

    pip install oss2
  2. Integrasikan Python SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      from alibabacloud_tea_util.client import Client as UtilClient
      from alibabacloud_tea_util import models as util_models
      import json
      import uuid
      
      import oss2
      import time
      
      config = Config(
          # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
          # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
          # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # Timeout koneksi dalam milidetik.
          connect_timeout=10000,
          # Timeout baca dalam milidetik.
          read_timeout=10000,
          # Wilayah layanan dan titik akhir. Tentukan berdasarkan kebutuhan bisnis Anda.
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      # Untuk kinerja yang lebih baik, gunakan kembali instance klien untuk menghindari pembuatan koneksi baru untuk setiap permintaan.
      client = Client(config)
      
      bucket = None
      upload_token = None
      
      
      def get_oss_client(is_vpc):
          global upload_token
          global bucket
          if (upload_token is None) or int(upload_token.expiration) <= int(time.time()):
              response = client.describe_upload_token()
      
              upload_token = response.body.data
              auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token)
      
              end_point = upload_token.oss_internet_end_point
              if is_vpc:
                  end_point = upload_token.oss_internal_end_point
              bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name)
      
      
      def upload_file(file_name, is_vpc):
          get_oss_client(is_vpc)
          object_name = upload_token.file_name_prefix + str(uuid.uuid4()) + '.' + file_name.split('.')[-1]
          bucket.put_object_from_file(object_name, file_name)
          return object_name
      
      
      def video_moderation_by_local_file(file_path, is_vpc):
          # 1. Unggah file.
          object_name = upload_file(file_path, is_vpc)
      
          # 2. Kirim video untuk dimoderasi.
          service_parameters = {
              'dataId': str(uuid.uuid4()),
              'ossBucketName': upload_token.bucket_name,
              'ossObjectName': object_name
          }
      
          video_moderation_request = models.VideoModerationRequest(
              # Layanan moderasi. Tetapkan nilai ke 'videoDetection_global'.
              service='videoDetection_global',
              service_parameters=json.dumps(service_parameters)
          )
      
          # Buat instance RuntimeOptions dan konfigurasikan parameternya.
          runtime = util_models.RuntimeOptions()
          runtime.read_timeout = 10000
          runtime.connect_timeout = 10000
          try:
              global client
              response = client.video_moderation_with_options(video_moderation_request, runtime)
              if response.status_code == 200:
                  # Panggilan API berhasil.
                  # Dapatkan hasil moderasi.
                  result = response.body
                  print('respons berhasil. hasil:{}'.format(result))
                  if result.code == 200:
                      result_data = result.data
                      print('hasil: {}'.format(result_data))
              else:
                  print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
          except Exception as err:
              print(err)
      
      
      if __name__ == '__main__':
          # Jalur ke file lokal.
          file_path = '/path/to/your/video.mp4'
          # Menunjukkan apakah layanan diterapkan di virtual private cloud (VPC).
          is_vpc = False  # True
          video_moderation_by_local_file(file_path, is_vpc)
          
    • Ambil hasil moderasi video

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
                  # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
                  access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                  access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                  # Timeout koneksi dalam milidetik.
                  connect_timeout=3000,
                  # Timeout baca dalam milidetik.
                  read_timeout=6000,
                  # Wilayah layanan dan titik akhir. Tentukan berdasarkan kebutuhan bisnis Anda.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas moderasi video, dikembalikan saat pengiriman.
      serviceParameters = {
          "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
      }
      videoModerationResultRequest = models.VideoModerationResultRequest(
          # Layanan moderasi. Tetapkan nilai ke 'videoDetection_global'.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_result(videoModerationResultRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
          # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
          # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # Timeout koneksi dalam milidetik.
          connect_timeout=10000,
          # Timeout baca dalam milidetik.
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat pengiriman.
      serviceParameters = {
          "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
      }
      videoModerationCancelRequest = models.VideoModerationCancelRequest(
          # Layanan moderasi.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_cancel(videoModerationCancelRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

Video OSS

Kasus penggunaan

Jika video yang ingin Anda moderasi sudah berada di Object Storage Service (OSS), buat peran layanan yang memberikan akses layanan Content Moderation ke sumber daya OSS Anda. Layanan Moderasi Video 2.0 kemudian menggunakan peran ini untuk mengambil dan memoderasi file tersebut. Untuk membuat peran tersebut, kunjungi halaman Otorisasi Akses Sumber Daya Cloud.

  1. Jalankan perintah berikut untuk menginstal paket:

    pip install alibabacloud_green20220302==3.2.4
  2. Integrasikan Python SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
                  # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
                  access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                  access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                  # Timeout koneksi dalam milidetik.
                  connect_timeout=3000,
                  # Timeout baca dalam milidetik.
                  read_timeout=6000,
                  # Wilayah layanan dan titik akhir. Tentukan berdasarkan kebutuhan bisnis Anda.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'ossBucketName': 'your-bucket-name',
          'ossObjectName': 'path/to/your/video.flv',
          'ossRegionId': 'ap-southeast-1'
      }
      videoModerationRequest = models.VideoModerationRequest(
          # Layanan moderasi. Tetapkan nilai ke 'videoDetection_global'.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation(videoModerationRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Ambil hasil moderasi video

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
                  # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
                  access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                  access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                  # Timeout koneksi dalam milidetik.
                  connect_timeout=3000,
                  # Timeout baca dalam milidetik.
                  read_timeout=6000,
                  # Wilayah layanan dan titik akhir. Tentukan berdasarkan kebutuhan bisnis Anda.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas moderasi video, dikembalikan saat pengiriman.
      serviceParameters = {
          "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
      }
      videoModerationResultRequest = models.VideoModerationResultRequest(
          # Layanan moderasi. Tetapkan nilai ke 'videoDetection_global'.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_result(videoModerationResultRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      # -*- encoding: utf-8 -*-
      # Diperlukan Python 3.6 atau yang lebih baru.
      import os
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
          # Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran, yang mengompromikan keamanan semua sumber daya di akun Anda.
          # Simpan kredensial Anda dalam variabel lingkungan, seperti yang ditunjukkan dalam contoh ini.
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # Timeout koneksi dalam milidetik.
          connect_timeout=10000,
          # Timeout baca dalam milidetik.
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat pengiriman.
      serviceParameters = {
          "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
      }
      videoModerationCancelRequest = models.VideoModerationCancelRequest(
          # Layanan moderasi.
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_cancel(videoModerationCancelRequest)
          if response.status_code == 200:
              # Panggilan API berhasil.
              result = response.body
              print('respons berhasil. hasil:{}'.format(result))
          else:
              print('respons tidak berhasil. status:{} ,hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

PHP SDK

Memerlukan PHP 5.6 atau versi lebih baru.

Untuk kode sumbernya, lihat kode sumber PHP SDK.

Tiga jenis deteksi video berikut didukung.

Moderasi video publik

Skenario

Layanan Moderasi Video 2.0 dapat mengambil dan memoderasi video apa pun yang tersedia melalui URL publik.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    composer require alibabacloud/green-20220302 3.2.4
  2. Integrasikan PHP SDK.

    • Kirim tugas moderasi video

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M harian.
           * Kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat mengompromikan keamanan semua sumber daya di akun Anda.
           * Kami merekomendasikan agar Anda mengambil kredensial dari variabel lingkungan. Contoh:
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan Rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => 'Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.',
          "accessKeySecret" => 'Kami merekomendasikan agar Anda mendapatkan Rahasia AccessKey pengguna RAM dari variabel lingkungan.',
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Untuk meningkatkan kinerja deteksi, gunakan kembali instance klien untuk menghindari pembentukan koneksi berulang.
      $client = new Green($config);
      
      $request = new VideoModerationRequest();
      // Jenis deteksi: `videoDetection_global` untuk deteksi file video, dan `liveStreamDetection_global` untuk deteksi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array("url" => "https://xxx.oss.aliyuncs.com/xxx.mp4");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->videoModerationWithOptions($request, $runtime);
          print_r($response->body);
          if (200 != $response->statusCode) {
              print_r("Respons tidak berhasil. Code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (200 != $body->code) {
              print_r("Moderasi video tidak berhasil. Code:" . $body->code);
          }
          $data = $body->data;
          print_r("taskId = " . $data->taskId);
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • Ambil hasil tugas moderasi video

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResultRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M harian.
           * Kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat mengompromikan keamanan semua sumber daya di akun Anda.
           * Kami merekomendasikan agar Anda mengambil kredensial dari variabel lingkungan. Contoh:
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan Rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => 'Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.',
          "accessKeySecret" => 'Kami merekomendasikan agar Anda mendapatkan Rahasia AccessKey pengguna RAM dari variabel lingkungan.',
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Untuk meningkatkan kinerja deteksi, gunakan kembali instance klien untuk menghindari pembentukan koneksi berulang.
      $client = new Green($config);
      
      $request = new VideoModerationResultRequest();
      // Jenis deteksi: `videoDetection_global` untuk deteksi file video, dan `liveStreamDetection_global` untuk deteksi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array("taskId" => "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->videoModerationResultWithOptions($request, $runtime);
          if (200 != $response->statusCode) {
              print_r("Respons tidak berhasil. Code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (280 == $body->code) {
              print_r("Tugas moderasi video sedang diproses. Code:" . $body->code);
              return;
          }
          if (200 != $body->code) {
              print_r("Hasil moderasi video tidak berhasil diambil. Code:" . $body->code);
              return;
          }
          $data = $body->data;
          print_r("liveId = " . $data->liveId . "\n");
          print_r("dataId = " . $data->dataId . "\n");
          print_r("riskLevel = " . $data->RiskLevel . "\n");
          print_r("audioResult = " . json_encode($data->audioResult) . "\n");
          print_r("frameResult = " . json_encode($data->frameResult) . "\n");
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • Batalkan tugas moderasi video

      <?php
        require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationCancelRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M harian.
           * Kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey Anda di kode proyek Anda. Hal ini dapat mengompromikan keamanan semua sumber daya di akun Anda.
           * Kami merekomendasikan agar Anda mengambil kredensial dari variabel lingkungan. Contoh:
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan Rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => 'Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.',
          "accessKeySecret" => 'Kami merekomendasikan agar Anda mendapatkan Rahasia AccessKey pengguna RAM dari variabel lingkungan.',
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Untuk meningkatkan kinerja deteksi, gunakan kembali instance klien untuk menghindari pembentukan koneksi berulang.
      $client = new Green($config);
      
      $request = new VideoModerationCancelRequest();
      // Jenis deteksi: `videoDetection_global` untuk deteksi file video, dan `liveStreamDetection_global` untuk deteksi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****');
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
        $response = $client->videoModerationCancel($request, $runtime);
        print_r($response->body);
        if (200 == $response->statusCode) {
          $body = $response->body;
          print_r("requestId = " . $body->requestId);
          print_r("code = " . $body->code);
          print_r("message = " . $body->message);
          if (200 != $body->code) {
            print_r("Tugas moderasi video tidak dibatalkan. Code:" . $body->code);
          }
        } else {
          print_r("Respons tidak berhasil. Code:" . $response->statusCode);
        }
      } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
      }

Moderasi video lokal

Kasus penggunaan

Untuk memoderasi video lokal yang tidak memiliki URL publik, unggah ke bucket OSS yang disediakan oleh Content Moderation. Layanan Moderasi Video 2.0 kemudian dapat langsung mengakses OSS untuk memoderasi video tersebut.

  1. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan.

    composer require alibabacloud/green-20220302 3.2.4

    Instal SDK OSS:

    composer require aliyuncs/oss-sdk-php
  2. Integrasikan PHP SDK.

    • Kirim tugas moderasi video

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResponse;
      use AlibabaCloud\Tea\Utils\Utils;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationRequest;
      use OSS\OssClient;
      
      // Menentukan apakah layanan diterapkan di VPC.
      $isVPC = false;
      // Token unggah file.
      $tokenArray = array();
      // Klien untuk permintaan unggah file.
      $ossClient = null;
      
      /**
       * Membuat klien permintaan.
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return Green
       */
      function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
      {
          $config = new Config([
              "accessKeyId" => $accessKeyId,
              "accessKeySecret" => $accessKeySecret,
              // Atur proxy HTTP.
              // "httpProxy" => "http://10.10.xx.xx:xxxx",
              // Atur proxy HTTPS.
              // "httpsProxy" => "https://10.10.xx.xx:xxxx",
              "endpoint" => $endpoint,
          ]);
          return new Green($config);
      }
      
      /**
       * Membuat klien unggah file.
       * @param $tokenData
       * @return void
       */
      function create_upload_client($tokenData): void
      {
      
          global $isVPC;
          global $ossClient;
          // Catatan: Untuk kinerja yang lebih baik, gunakan kembali klien untuk menghindari koneksi berulang.
          if ($isVPC) {
              $ossClient = new OssClient($tokenData->accessKeyId, $tokenData->accessKeySecret, $tokenData->ossInternalEndPoint, false, $tokenData->securityToken);
          } else {
              $ossClient = new OssClient($tokenData->accessKeyId, $tokenData->accessKeySecret, $tokenData->ossInternetEndPoint, false, $tokenData->securityToken);
          }
      }
      
      /**
       * Mengunggah file.
       * @param $filePath
       * @param $tokenData
       * @return string
       * @throws \OSS\Core\OssException
       */
      function upload_file($filePath, $tokenData): string
      {
          global $ossClient;
          // Inisialisasi OssClient.
          create_upload_client($tokenData);
          $split = explode(".", $filePath);
          if (count($split) > 1) {
              $objectName = $tokenData->fileNamePrefix . uniqid() . "." . explode(".", $filePath)[count($split) - 1];
          } else {
              $objectName = $tokenData->fileNamePrefix . uniqid();
          }
          // Mengunggah file.
          $ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath);
          return $objectName;
      }
      
      /**
       * Mengirimkan tugas moderasi.
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return VideoModerationResponse
       * @throws \OSS\Core\OssException
       */
      function invoke($accessKeyId, $accessKeySecret, $endpoint): VideoModerationResponse
      {
          global $tokenArray;
          // Catatan: Untuk kinerja yang lebih baik, gunakan kembali klien untuk menghindari koneksi berulang.
          $client = create_client($accessKeyId, $accessKeySecret, $endpoint);
          // Atur parameter runtime.
          $runtime = new RuntimeOptions([]);
          // Jalur lengkap file lokal, misalnya, D:\\localPath\\exampleFile.mp4.
          $filePath = "D:\\test\\video\\b652.mp4";
      
          // Dapatkan token unggah file.
          if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) {
              $token = $client->describeUploadToken();
              $tokenArray[$endpoint] = $token->body->data;
          }
      
          // Mengunggah file.
          $objectName = upload_file($filePath, $tokenArray[$endpoint]);
      
          // Atur parameter moderasi.
          $request = new VideoModerationRequest();
          // Contoh: videoDetection_global
            $request->service = "videoDetection_global";
          // Informasi OSS untuk file yang akan dimoderasi.
          $serviceParameters = array(
              'ossObjectName' => $objectName,
              'ossBucketName' => $tokenArray[$endpoint]->bucketName,
              'dataId' => uniqid());
          $request->serviceParameters = json_encode($serviceParameters);
          // Kirim tugas moderasi.
          return $client->videoModerationWithOptions($request, $runtime);
      }
      
      /**
       * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin penuh pada semua API. Untuk keamanan yang lebih baik, kami merekomendasikan menggunakan pengguna RAM untuk akses API dan operasi harian.
       * Jangan hard-code ID AccessKey dan Rahasia AccessKey Anda di kode Anda. Hal ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan semua sumber daya Anda.
       * Kami merekomendasikan mendapatkan kredensial Anda dari variabel lingkungan.
       * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
       * Dapatkan rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
       */
      $accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
      $accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
      // Ubah wilayah dan titik akhir sesuai kebutuhan.
      $endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
      
      try {
          $response = invoke($accessKeyId, $accessKeySecret, $endpoint);
          print_r(json_encode($response->body, JSON_UNESCAPED_UNICODE));
      } catch (Exception $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • Ambil hasil moderasi video

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResultRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin penuh pada semua API. Untuk keamanan yang lebih baik, kami merekomendasikan menggunakan pengguna RAM untuk akses API dan operasi harian.
           * Jangan hard-code ID AccessKey dan Rahasia AccessKey Anda di kode Anda. Hal ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan semua sumber daya Anda.
           * Kami merekomendasikan mendapatkan kredensial Anda dari variabel lingkungan.
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
          "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Untuk kinerja yang lebih baik, gunakan kembali klien untuk menghindari koneksi berulang.
      $client = new Green($config);
      
      $request = new VideoModerationResultRequest();
      // Jenis layanan: `videoDetection` untuk moderasi file video, `liveStreamDetection` untuk moderasi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array("taskId" => "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->videoModerationResultWithOptions($request, $runtime);
          if (200 != $response->statusCode) {
              print_r("Respons tidak berhasil. code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (280 == $body->code) {
              print_r("Tugas moderasi video sedang berlangsung. code:" . $body->code);
              return;
          }
          if (200 != $body->code) {
              print_r("Gagal mengambil hasil moderasi video. code:" . $body->code);
              return;
          }
          $data = $body->data;
          print_r("liveId = " . $data->liveId . "\n");
          print_r("dataId = " . $data->dataId . "\n");
          print_r("riskLevel = " . $data->RiskLevel . "\n");
          print_r("audioResult = " . json_encode($data->audioResult) . "\n");
          print_r("frameResult = " . json_encode($data->frameResult) . "\n");
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • Batalkan tugas moderasi video

      <?php
        require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationCancelRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin penuh pada semua API. Untuk keamanan yang lebih baik, kami merekomendasikan menggunakan pengguna RAM untuk akses API dan operasi harian.
           * Jangan hard-code ID AccessKey dan Rahasia AccessKey Anda di kode Anda. Hal ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan semua sumber daya Anda.
           * Kami merekomendasikan mendapatkan kredensial Anda dari variabel lingkungan.
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
          "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Untuk kinerja yang lebih baik, gunakan kembali klien untuk menghindari koneksi berulang.
      $client = new Green($config);
      
      $request = new VideoModerationCancelRequest();
      // Jenis layanan: `videoDetection` untuk moderasi file video, `liveStreamDetection` untuk moderasi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****');
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
        $response = $client->videoModerationCancel($request, $runtime);
        print_r($response->body);
        if (200 == $response->statusCode) {
          $body = $response->body;
          print_r("requestId = " . $body->requestId);
          print_r("code = " . $body->code);
          print_r("message = " . $body->message);
          if (200 != $body->code) {
            print_r("Gagal membatalkan tugas moderasi video. code:" . $body->code);
          }
        } else {
          print_r("Respons tidak berhasil. code:" . $response->statusCode);
        }
      } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
      }

Deteksi video OSS

Kasus penggunaan

Jika file video yang perlu Anda moderasi sudah disimpan di OSS, otorisasi layanan Content Moderation untuk mengakses OSS dengan membuat peran layanan. Layanan Moderasi Video 2.0 menggunakan peran layanan ini untuk mengambil dan memoderasi file dari OSS. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan.

    composer require alibabacloud/green-20220302 3.2.4
  2. Integrasikan PHP SDK.

    • Kode contoh untuk mengirimkan tugas deteksi video

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey untuk akun Alibaba Cloud memberikan akses ke semua API. Kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M harian.
           * Untuk alasan keamanan, kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey Anda di kode Anda.
           * Hard-coding kredensial dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya di akun Anda.
           * Kami merekomendasikan mengambil kredensial dari variabel lingkungan:
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan Rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => 'Kami merekomendasikan agar Anda mengambil ID AccessKey pengguna RAM dari variabel lingkungan',
          "accessKeySecret" => 'Kami merekomendasikan agar Anda mengambil Rahasia AccessKey pengguna RAM dari variabel lingkungan',
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Gunakan kembali klien kapan pun memungkinkan untuk menghindari koneksi ulang dan meningkatkan kinerja deteksi.
      $client = new Green($config);
      
      $request = new VideoModerationRequest();
      // Jenis deteksi: `videoDetection_global` untuk deteksi file video, `liveStreamDetection_global` untuk deteksi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array(
                // File yang akan dideteksi. Contoh: video/001.mp4
              'ossObjectName' => 'video/001.mp4',
              // Wilayah bucket tempat file disimpan. Contoh: ap-southeast-1
              'ossRegionId' => 'ap-southeast-1',
                // Nama bucket tempat file disimpan. Contoh: bucket001
              'ossBucketName' => 'bucket001',
              // Pengidentifikasi unik untuk data.
              'dataId' => uniqid());
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->videoModerationWithOptions($request, $runtime);
          print_r($response->body);
          if (200 != $response->statusCode) {
              print_r("Respons tidak berhasil. code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (200 != $body->code) {
              print_r("Moderasi video gagal. code:" . $body->code);
          }
          $data = $body->data;
          print_r("taskId = " . $data->taskId);
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • Kode contoh untuk mengkueri tugas deteksi video

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResultRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey untuk akun Alibaba Cloud memberikan akses ke semua API. Kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M harian.
           * Untuk alasan keamanan, kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey Anda di kode Anda.
           * Hard-coding kredensial dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya di akun Anda.
           * Kami merekomendasikan mengambil kredensial dari variabel lingkungan:
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan Rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => 'Kami merekomendasikan agar Anda mengambil ID AccessKey pengguna RAM dari variabel lingkungan',
          "accessKeySecret" => 'Kami merekomendasikan agar Anda mengambil Rahasia AccessKey pengguna RAM dari variabel lingkungan',
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Gunakan kembali klien kapan pun memungkinkan untuk menghindari koneksi ulang dan meningkatkan kinerja deteksi.
      $client = new Green($config);
      
      $request = new VideoModerationResultRequest();
      // Jenis deteksi: `videoDetection_global` untuk deteksi file video, `liveStreamDetection_global` untuk deteksi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array("taskId" => "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->videoModerationResultWithOptions($request, $runtime);
          if (200 != $response->statusCode) {
              print_r("Respons tidak berhasil. code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (280 == $body->code) {
              print_r("Tugas moderasi video sedang diproses. code:" . $body->code);
              return;
          }
          if (200 != $body->code) {
              print_r("Hasil moderasi video tidak berhasil diambil. code:" . $body->code);
              return;
          }
          $data = $body->data;
          print_r("liveId = " . $data->liveId . "\n");
          print_r("dataId = " . $data->dataId . "\n");
          print_r("riskLevel = " . $data->RiskLevel . "\n");
          print_r("audioResult = " . json_encode($data->audioResult) . "\n");
          print_r("frameResult = " . json_encode($data->frameResult) . "\n");
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • Kode contoh untuk membatalkan tugas deteksi video

      <?php
        require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302.Models\VideoModerationCancelRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Pasangan AccessKey untuk akun Alibaba Cloud memberikan akses ke semua API. Kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M harian.
           * Untuk alasan keamanan, kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey Anda di kode Anda.
           * Hard-coding kredensial dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya di akun Anda.
           * Kami merekomendasikan mengambil kredensial dari variabel lingkungan:
           * Dapatkan ID AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * Dapatkan Rahasia AccessKey pengguna RAM: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => 'Kami merekomendasikan agar Anda mengambil ID AccessKey pengguna RAM dari variabel lingkungan',
          "accessKeySecret" => 'Kami merekomendasikan agar Anda mengambil Rahasia AccessKey pengguna RAM dari variabel lingkungan',
          // Atur proxy HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proxy HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Gunakan kembali klien kapan pun memungkinkan untuk menghindari koneksi ulang dan meningkatkan kinerja deteksi.
      $client = new Green($config);
      
      $request = new VideoModerationCancelRequest();
      // Jenis deteksi: `videoDetection_global` untuk deteksi file video, `liveStreamDetection_global` untuk deteksi aliran langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****');
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
        $response = $client->videoModerationCancel($request, $runtime);
        print_r($response->body);
        if (200 == $response->statusCode) {
          $body = $response->body;
          print_r("requestId = " . $body->requestId);
          print_r("code = " . $body->code);
          print_r("message = " . $body->message);
          if (200 != $body->code) {
            print_r("Tugas moderasi video tidak berhasil dibatalkan. code:" . $body->code);
          }
        } else {
          print_r("Respons tidak berhasil. code:" . $response->statusCode);
        }
      } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
      }

Go SDK

Layanan ini mendukung tiga jenis deteksi video.

Moderasi video dari URL publik

Skenario

Jika video yang ingin Anda moderasi tersedia di URL publik, layanan Moderasi Video 2.0 dapat mengunduh dan memoderasinya.

  1. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan.

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4
  2. Integrasikan SDK untuk Go.

    • Kirim tugas moderasi video

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"net/http"
      	"os"
      )
      
      func main() {
      	// Untuk alasan keamanan, kami merekomendasikan agar Anda tidak hard-code kredensial Anda di kode Anda.
      	// Sebagai gantinya, muat dari variabel lingkungan atau gunakan metode yang lebih aman seperti STS.
      	config := &openapi.Config{
      		// Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API.
      		// Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
      		// Untuk mengamankan kredensial Anda, kami merekomendasikan agar Anda menyimpannya sebagai variabel lingkungan.
      		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
      		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
      		// Atur proxy HTTP.
      		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
      		// Atur proxy HTTPS.
      		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
      		RegionId: tea.String("ap-southeast-1"),
      		Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
      		/**
      		 * Atur periode timeout. Timeout sisi server untuk permintaan end-to-end adalah 10 detik. Pastikan pengaturannya sesuai.
      		 * Jika ReadTimeout yang Anda atur lebih pendek dari waktu pemrosesan server, pengecualian ReadTimeout akan dilemparkan.
      		 */
      		ConnectTimeout: tea.Int(3000),
      		ReadTimeout:    tea.Int(6000),
      	}
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeObject dan atur parameter runtime.
      	runtime := &util.RuntimeOptions{}
      	runtime.ReadTimeout = tea.Int(10000)
      	runtime.ConnectTimeout = tea.Int(10000)
      
      	serviceParameters, _ := json.Marshal(
      		map[string]interface{}{
      			"url": "https://your-video-url.mp4",
      		},
      	)
      	request := green20220302.VideoModerationRequest{
      		Service:           tea.String("videoDetection_global"),
      		ServiceParameters: tea.String(string(serviceParameters)),
      	}
      
      	result, _err := client.VideoModerationWithOptions(&request, runtime)
      	if _err != nil {
      		panic(_err)
      	}
      
      	if *result.StatusCode != http.StatusOK {
      		fmt.Printf("respons tidak berhasil. status:%d\n", *result.StatusCode)
      		return
      	}
      	body := result.Body
      	fmt.Printf("respons berhasil. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
      	if *body.Code != http.StatusOK {
      		fmt.Printf("moderasi video tidak berhasil. code:%d\n", *body.Code)
      		return
      	}
      
      	data := body.Data
      	fmt.Printf("taskId moderasi video:%s\n", *data.TaskId)
      }
    • Dapatkan hasil tugas moderasi video

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"net/http"
      	"os"
      )
      
      func main() {
      	// Untuk alasan keamanan, kami merekomendasikan agar Anda tidak hard-code kredensial Anda di kode Anda.
      	// Sebagai gantinya, muat dari variabel lingkungan atau gunakan metode yang lebih aman seperti STS.
      	config := &openapi.Config{
      		// Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API.
      		// Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
      		// Untuk mengamankan kredensial Anda, kami merekomendasikan agar Anda menyimpannya sebagai variabel lingkungan.
      		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
      		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
      		// Atur proxy HTTP.
      		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
      		// Atur proxy HTTPS.
      		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
      		RegionId: tea.String("ap-southeast-1"),
      		Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
      		/**
      		 * Atur periode timeout. Timeout sisi server untuk permintaan end-to-end adalah 10 detik. Pastikan pengaturannya sesuai.
      		 * Jika ReadTimeout yang Anda atur lebih pendek dari waktu pemrosesan server, pengecualian ReadTimeout akan dilemparkan.
      		 */
      		ConnectTimeout: tea.Int(3000),
      		ReadTimeout:    tea.Int(6000),
      	}
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeObject dan atur parameter runtime.
      	runtime := &util.RuntimeOptions{}
      	runtime.ReadTimeout = tea.Int(10000)
      	runtime.ConnectTimeout = tea.Int(10000)
      
      	serviceParameters, _ := json.Marshal(
      		map[string]interface{}{
      			"taskId": "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****",
      		},
      	)
      	request := green20220302.VideoModerationResultRequest{
      		Service:           tea.String("videoDetection_global"),
      		ServiceParameters: tea.String(string(serviceParameters)),
      	}
      
      	result, _err := client.VideoModerationResultWithOptions(&request, runtime)
      	if _err != nil {
      		panic(_err)
      	}
      
      	if *result.StatusCode != http.StatusOK {
      		fmt.Printf("respons tidak berhasil. status:%d\n", *result.StatusCode)
      		return
      	}
      	body := result.Body
      	fmt.Printf("respons berhasil. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
      	if *body.Code == 280 {
      		fmt.Printf("Tugas moderasi video sedang diproses. code:%d\n", *body.Code)
      		return
      	}
      	if *body.Code != http.StatusOK {
      		fmt.Printf("Gagal mendapatkan hasil moderasi video. code:%d\n", *body.Code)
      		return
      	}
      
      	data := body.Data
          fmt.Printf("Hasil moderasi video: %+v\n", data)
      	fmt.Printf("Hasil audio: %+v\n", data.AudioResult)
      	fmt.Printf("Hasil frame: %+v\n", data.FrameResult)
      }
    • Batalkan tugas moderasi aliran langsung

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"net/http"
      	"os"
      )
      
      func main() {
      	// Untuk alasan keamanan, kami merekomendasikan agar Anda tidak hard-code kredensial Anda di kode Anda.
      	// Sebagai gantinya, muat dari variabel lingkungan atau gunakan metode yang lebih aman seperti STS.
      	config := &openapi.Config{
      		// Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API.
      		// Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
      		// Untuk mengamankan kredensial Anda, kami merekomendasikan agar Anda menyimpannya sebagai variabel lingkungan.
      		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
      		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
      		// Atur proxy HTTP.
      		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
      		// Atur proxy HTTPS.
      		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
      		RegionId: tea.String("ap-southeast-1"),
      		Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
      		/**
      		 * Atur periode timeout. Timeout sisi server untuk permintaan end-to-end adalah 10 detik. Pastikan pengaturannya sesuai.
      		 * Jika ReadTimeout yang Anda atur lebih pendek dari waktu pemrosesan server, pengecualian ReadTimeout akan dilemparkan.
      		 */
      		ConnectTimeout: tea.Int(3000),
      		ReadTimeout:    tea.Int(6000),
      	}
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeObject dan atur parameter runtime.
      	runtime := &util.RuntimeOptions{}
      	runtime.ReadTimeout = tea.Int(10000)
      	runtime.ConnectTimeout = tea.Int(10000)
      
      	serviceParameters, _ := json.Marshal(
      		map[string]interface{}{
      			"taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****",
      		},
      	)
      	request := green20220302.VideoModerationCancelRequest{
      		Service:           tea.String("videoDetection_global"),
      		ServiceParameters: tea.String(string(serviceParameters)),
      	}
      
      	result, _err := client.VideoModerationCancelWithOptions(&request, runtime)
      	if _err != nil {
      		panic(_err)
      	}
      
      	if *result.StatusCode != http.StatusOK {
      		fmt.Printf("respons tidak berhasil. status:%d\n", *result.StatusCode)
      		return
      	}
      	body := result.Body
      	fmt.Printf("respons berhasil. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
      	if *body.Code != http.StatusOK {
      		fmt.Printf("Gagal membatalkan tugas moderasi video. code:%d\n", *body.Code)
      	}
      }

Moderasi video lokal

Kasus penggunaan

Saat video yang perlu Anda moderasi berada di mesin lokal dan tidak memiliki URL publik, unggah video tersebut ke bucket Object Storage Service (OSS) yang disediakan oleh Content Moderation. Layanan Moderasi Video 2.0 dapat langsung mengakses OSS untuk mengambil konten video guna dimoderasi.

  1. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan.

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4

    Instal SDK OSS:

    go get github.com/aliyun/aliyun-oss-go-sdk/oss
  2. Integrasikan Go SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "github.com/google/uuid"
          "net/http"
          "os"
          "strings"
          "time"
      )
      // Token untuk unggah file.
      var TokenMap =make(map[string]*green20220302.DescribeUploadTokenResponseBodyData)
      // Klien untuk unggah file.
      var Bucket *oss.Bucket
      // Menentukan apakah layanan diterapkan di VPC.
      var isVPC = false
      // Membuat klien permintaan.
      func createClient(accessKeyId string, accessKeySecret string, endpoint string) (*green20220302.Client, error) {
          config := &openapi.Config{
              AccessKeyId: tea.String(accessKeyId),
              AccessKeySecret: tea.String(accessKeySecret),
              // Atur proxy HTTP.
              // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
              // Atur proxy HTTPS.
              // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
              Endpoint: tea.String(endpoint),
          }
          // Catatan: Untuk meningkatkan kinerja, gunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang.
          return green20220302.NewClient(config);
      }
      
      // Membuat klien untuk unggah file.
      func createOssClient(tokenData *green20220302.DescribeUploadTokenResponseBodyData) {
          if isVPC{
              ossClient, err := oss.New(tea.StringValue(tokenData.OssInternalEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken)))
              if err != nil {
                  fmt.Println("Error:", err)
                  os.Exit(-1)
              }
              Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName));
          }else {
              ossClient, err := oss.New(tea.StringValue(tokenData.OssInternetEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken)))
              if err != nil {
                  fmt.Println("Error:", err)
                  os.Exit(-1)
              }
              Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName));
          }
      }
      
      // Mengunggah file.
      func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) {
          createOssClient(tokenData)
          objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1]
              // Mengunggah file.
              _err := Bucket.PutObjectFromFile(objectName, filePath)
              if _err != nil {
                  fmt.Println("Error:", _err)
                  os.Exit(-1)
              }
          return objectName,_err
      }
      
      func invoke(accessKeyId string, accessKeySecret string, endpoint string) (_result *green20220302.VideoModerationResponse, _err error) {
          // Catatan: Untuk meningkatkan kinerja, gunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang.
          client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
          if _err != nil {
              return nil,_err
          }
          // Atur opsi runtime, yang hanya berlaku untuk permintaan yang dibuat dengan instance runtime ini.
          runtime := &util.RuntimeOptions{}
          // Jalur lengkap ke file lokal. Contoh: /path/to/your/video.mp4.
          var filePath = "/path/to/your/video.mp4"
          // Dapatkan token sementara untuk unggah file.
              tokenData,ok:=TokenMap[endpoint];
              if !ok || tea.Int32Value(tokenData.Expiration) <= int32(time.Now().Unix()) {
                  // Dapatkan token sementara untuk unggah file.
                  uploadTokenResponse, _err := client.DescribeUploadToken()
                  if _err != nil {
                      return nil,_err
                  }
                  tokenData = uploadTokenResponse.Body.Data
                  TokenMap[endpoint] = tokenData
              }
               var objectName, _ = uploadFile(filePath,TokenMap[endpoint])
      
          // Bangun permintaan moderasi.
              serviceParameters, _ := json.Marshal(
                  map[string]interface{}{
                      "ossBucketName": tea.StringValue(TokenMap[endpoint].BucketName),
                      "ossObjectName": objectName,
                      "dataId":   uuid.New().String(),
                  },
              )
              videoModerationRequest := &green20220302.VideoModerationRequest{
                  // Contoh: videoDetection_global
            Service:           tea.String("videoDetection_global"),
                  ServiceParameters: tea.String(string(serviceParameters)),
              }
      
          return client.VideoModerationWithOptions(videoModerationRequest, runtime)
      
      }
      
      func main() {
          // Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Untuk keamanan yang lebih baik, kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M rutin.
          // Jangan hardcode ID AccessKey atau Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan sumber daya akun Anda.
          // Sebagai gantinya, simpan kredensial dalam variabel lingkungan.
          // Dapatkan ID AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
          // Dapatkan rahasia AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
          var accessKeyId= os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
          var accessKeySecret= os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
          // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
          var endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
          response,_err := invoke(accessKeyId,accessKeySecret,endpoint)
          
          flag := false
          if _err != nil {
              var err = &tea.SDKError{}
              if _t, ok := _err.(*tea.SDKError); ok {
                  err = _t
                  if *err.StatusCode == 500 {
                      flag = true
                  }
              }
          }
          if response == nil || *response.StatusCode == 500 || *response.Body.Code == 500 {
              flag = true
          }
          // Failover otomatis. Jika permintaan gagal, wilayah dialihkan ke Tiongkok (Beijing).
          if flag {
              endpoint = "green-cip.cn-beijing.aliyuncs.com";
              response, _err = invoke(accessKeyId,accessKeySecret,endpoint)
          }
      
          if response != nil {
              statusCode := tea.IntValue(tea.ToInt(response.StatusCode))
              body := response.Body
              videoModerationResponseData := body.Data
              fmt.Println("requestId:" + tea.StringValue(body.RequestId))
              if statusCode == http.StatusOK {
                  fmt.Println("Permintaan berhasil. respons:" + body.String())
                  if tea.IntValue(tea.ToInt(body.Code)) == 200 {
                      result := videoModerationResponseData.Result
                      fmt.Println("respons dataId:" + tea.StringValue(videoModerationResponseData.DataId))
                      for i := 0; i < len(result); i++ {
                          fmt.Println("respons label:" + tea.StringValue(result[i].Label))
                          fmt.Println("respons confidence:" + tea.ToString(tea.Float32Value(result[i].Confidence)))
                      }
                  } else {
                      fmt.Println("Moderasi video gagal. status" + tea.ToString(body.Code))
                  }
              } else {
                  fmt.Print("Permintaan gagal. status:" + tea.ToString(statusCode))
              }
          }
      }
    • Ambil hasil tugas moderasi video

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"net/http"
          "os"
      )
      
      func main() {
      	// Untuk keamanan yang ditingkatkan, kami merekomendasikan menggunakan metode seperti STS dan menghindari hardcoding kredensial Anda.
          config := &openapi.Config{
              // Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Untuk keamanan yang lebih baik, kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M rutin.
              // Jangan hardcode ID AccessKey atau Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan sumber daya akun Anda.
              // Sebagai gantinya, simpan kredensial dalam variabel lingkungan.
              // Dapatkan ID AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
              // Dapatkan rahasia AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
              AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
              AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
              // Atur proxy HTTP.
              // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
              // Atur proxy HTTPS.
              // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
              RegionId: tea.String("ap-southeast-1"),
              Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              // Timeout sisi server untuk operasi ini adalah 10 detik. Pastikan timeout sisi klien Anda diatur dengan tepat.
      		// Jika `ReadTimeout` Anda lebih pendek dari waktu pemrosesan server, pengecualian `ReadTimeout` akan terjadi.
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeOptions dan atur parameter runtime.
      	runtime := &util.RuntimeOptions{}
      	runtime.ReadTimeout = tea.Int(10000)
      	runtime.ConnectTimeout = tea.Int(10000)
      
      	serviceParameters, _ := json.Marshal(
      		map[string]interface{}{
      			"taskId": "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****",
      		},
      	)
      	request := green20220302.VideoModerationResultRequest{
      		Service:           tea.String("videoDetection_global"),
      		ServiceParameters: tea.String(string(serviceParameters)),
      	}
      
      	result, _err := client.VideoModerationResultWithOptions(&request, runtime)
      	if _err != nil {
      		panic(_err)
      	}
      
      	if *result.StatusCode != http.StatusOK {
      		fmt.Printf("Permintaan gagal. status:%d\n", *result.StatusCode)
      		return
      	}
      	body := result.Body
      	fmt.Printf("Permintaan berhasil. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
      	if *body.Code == 280 {
      		fmt.Printf("Tugas moderasi video sedang diproses. code:%d\n", *body.Code)
      		return
      	}
      	if *body.Code != http.StatusOK {
      		fmt.Printf("Gagal mendapatkan hasil moderasi video. code:%d\n", *body.Code)
      		return
      	}
      
      	data := body.Data
          fmt.Printf("Hasil moderasi video:%+v\n", data)
      	fmt.Printf("Hasil audio moderasi video:%+v\n", data.AudioResult)
      	fmt.Printf("Hasil frame moderasi video:%+v\n", data.FrameResult)
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
          "os"
      )
      
      func main() {
      	// Untuk keamanan yang ditingkatkan, kami merekomendasikan menggunakan metode seperti STS dan menghindari hardcoding kredensial Anda.
          config := &openapi.Config{
              // Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Untuk keamanan yang lebih baik, kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M rutin.
              // Jangan hardcode ID AccessKey atau Rahasia AccessKey Anda. Praktik ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan sumber daya akun Anda.
              // Sebagai gantinya, simpan kredensial dalam variabel lingkungan.
              // Dapatkan ID AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
              // Dapatkan rahasia AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
              AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
              AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
              // Atur proxy HTTP.
              // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
              // Atur proxy HTTPS.
              // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
              RegionId: tea.String("ap-southeast-1"),
              Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              // Timeout sisi server untuk operasi ini adalah 10 detik. Pastikan timeout sisi klien Anda diatur dengan tepat.
      		// Jika `ReadTimeout` Anda lebih pendek dari waktu pemrosesan server, pengecualian `ReadTimeout` akan terjadi.
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
          // Buat instance RuntimeOptions dan atur parameter runtime.
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****",
              },
          )
          request := green20220302.VideoModerationCancelRequest{
              Service:           tea.String("videoDetection_global"),
              ServiceParameters: tea.String(string(serviceParameters)),
          }
      
          result, _err := client.VideoModerationCancelWithOptions(&request, runtime)
          if _err != nil {
              panic(_err)
          }
      
          if *result.StatusCode != http.StatusOK {
              fmt.Printf("Permintaan gagal. status:%d\n", *result.StatusCode)
              return
          }
          body := result.Body
          fmt.Printf("Permintaan berhasil. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code != http.StatusOK {
              fmt.Printf("Gagal membatalkan tugas moderasi video. code:%d\n", *body.Code)
          }
      }

Moderasi video OSS

Skenario

Jika file video Anda untuk moderasi disimpan di Alibaba Cloud Object Storage Service (OSS), buat peran layanan untuk memberikan akses layanan Content Moderation ke sumber daya OSS Anda. Layanan Moderasi Video 2.0 menggunakan peran layanan ini untuk mengambil file dari OSS dan memoderasinya. Kunjungi halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk mengimpor dependensi yang diperlukan.

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4
  2. Integrasikan Go SDK.

    • Kirim tugas moderasi video

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          // Menyimpan AccessKey di kode proyek Anda dapat menyebabkan risiko keamanan. Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti STS, untuk otentikasi. Kode berikut hanya untuk referensi.
          config := &openapi.Config{
              /**
               * AccessKey akun Alibaba Cloud memiliki izin untuk semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
               * Kami sangat menyarankan agar Anda tidak hardcode ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Hal ini dapat mengekspos kredensial Anda dan mengompromikan semua sumber daya di akun Anda.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Dapatkan ID AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * Dapatkan Rahasia AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String(""),
    • Ambil hasil moderasi video

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"net/http"
      )
      
      func main() {
      	// Menyimpan AccessKey di kode proyek Anda dapat menyebabkan risiko keamanan. Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti STS, untuk otentikasi. Kode berikut hanya untuk referensi.
          config := &openapi.Config{
              /**
               * AccessKey akun Alibaba Cloud memiliki izin untuk semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
               * Kami sangat menyarankan agar Anda tidak hardcode ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Hal ini dapat mengekspos kredensial Anda dan mengompromikan semua sumber daya di akun Anda.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Dapatkan ID AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * Dapatkan Rahasia AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String(""),
    • Batalkan tugas moderasi video

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
      	// Menyimpan AccessKey di kode proyek Anda dapat menyebabkan risiko keamanan. Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti STS, untuk otentikasi. Kode berikut hanya untuk referensi.
          config := &openapi.Config{
              /**
               * AccessKey akun Alibaba Cloud memiliki izin untuk semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API dan O&M rutin.
               * Kami sangat menyarankan agar Anda tidak hardcode ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Hal ini dapat mengekspos kredensial Anda dan mengompromikan semua sumber daya di akun Anda.
               * Metode umum untuk mendapatkan variabel lingkungan:
               * Dapatkan ID AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * Dapatkan Rahasia AccessKey pengguna RAM: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String(""),

C# SDK

Lihat kode sumber SDK.

Tiga jenis deteksi video berikut didukung.

Moderasi video yang dapat diakses publik

Skenario

Jika video dapat diakses melalui jaringan publik, layanan Moderasi Video 2.0 mengambil file dari URL-nya untuk memoderasinya.

  1. Jalankan perintah berikut untuk menginstal dependensi yang diperlukan.

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4
  2. Integrasikan C# SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      using System;
      using System.Collections.Generic;
      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
              /**
               * Inisialisasi klien dengan pasangan AccessKey.
               * @param accessKeyId
               * @param accessKeySecret
               * @return Client
               * @throws Exception
               */
              public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret)
              {
                  AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                  {
                      AccessKeyId = accessKeyId,
                      AccessKeySecret = accessKeySecret,
                  };
                  // Titik akhir layanan.
                  config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                  return new AlibabaCloud.SDK.Green20220302.Client(config);
              }
      
              public static void Main(string[] args)
              {
                  // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda.
                  // Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), atau memuat kredensial dari variabel lingkungan.
                  /**
                  * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
                  * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan rahasia AccessKey di kode Anda. Jika tidak, pasangan AccessKey dapat dikompromikan, yang mengancam keamanan semua sumber daya Anda.
                  * Praktik umum adalah membaca kredensial dari variabel lingkungan:
                  * Dapatkan ID AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                  * Dapatkan rahasia AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                  */
                  string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                  string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
      
                  // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Bangun permintaan moderasi.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest();
                  // Layanan moderasi yang akan digunakan.
                  videoModerationRequest.Service = "videoDetection_global";
                  Dictionary<string, object> serviceParameters = new Dictionary<string, object>();
                  // URL video yang akan dimoderasi. URL harus dapat diakses publik.
                  serviceParameters.Add("url", "https://your-video-url.mp4");
                  videoModerationRequest.ServiceParameters = JsonConvert.SerializeObject(serviceParameters);
                  // Buat instance RuntimeOptions dan atur parameter runtime.
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                  runtime.ReadTimeout = 10000;
                  runtime.ConnectTimeout = 10000;
                  try
                  {
                      // Kirim tugas moderasi.
                      AlibabaCloud.SDK.Green20220302.Models.VideoModerationResponse response = client.VideoModerationWithOptions(videoModerationRequest, runtime);
                      if (response != null)
                      {
                          Console.WriteLine("Response StatusCode: " + response.StatusCode);
                          if (response.Body != null)
                          {
                              Console.WriteLine("RequestId: " + response.Body.RequestId);
                              Console.WriteLine("Code: " + response.Body.Code);
                              Console.WriteLine("Message: " + response.Body.Message);
                              if (response.Body.Data != null)
                              {
                                  Console.WriteLine("TaskId: " + response.Body.Data.TaskId);
                              }
                          }
                      }
                  }
                  catch (TeaException error)
                  {
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("Error: " + error);
                  }
                  catch (Exception _error)
                  {
                      TeaException error = new TeaException(new Dictionary<string, object>
                      {
                          { "message", _error.Message }
                      });
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("Error: " + error);
                  }
              }
          }
      }
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      using System;
      using System.Collections.Generic;
      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
              /**
               * Inisialisasi klien dengan pasangan AccessKey.
               * @param accessKeyId
               * @param accessKeySecret
               * @return Client
               * @throws Exception
               */
              public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret)
              {
                  AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                  {
                      AccessKeyId = accessKeyId,
                      AccessKeySecret = accessKeySecret,
                  };
                  // Titik akhir layanan.
                  config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                  return new AlibabaCloud.SDK.Green20220302.Client(config);
              }
      
              public static void Main(string[] args)
              {
                  // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda.
                  // Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), atau memuat kredensial dari variabel lingkungan.
                  /**
                  * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
                  * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan rahasia AccessKey di kode Anda. Jika tidak, pasangan AccessKey dapat dikompromikan, yang mengancam keamanan semua sumber daya Anda.
                  * Praktik umum adalah membaca kredensial dari variabel lingkungan:
                  * Dapatkan ID AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                  * Dapatkan rahasia AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                  */
                  string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                  string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
      
                  // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Bangun permintaan moderasi.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest();
                  // Layanan moderasi yang akan digunakan.
                  videoModerationResultRequest.Service = "videoDetection_global";
                  Dictionary<string, object> serviceParameters = new Dictionary<string, object>();
                  // ID tugas yang akan dikueri.
                  serviceParameters.Add("taskId", "");
                  videoModerationResultRequest.ServiceParameters = JsonConvert.SerializeObject(serviceParameters);
                  // Buat instance RuntimeOptions dan atur parameter runtime.
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                  runtime.ReadTimeout = 10000;
                  runtime.ConnectTimeout = 10000;
                  try
                  {
                      // Kirim permintaan kueri.
                      AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response = client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime);
                      if (response != null)
                      {
                          Console.WriteLine("Response StatusCode: " + response.StatusCode);
                          if (response.Body != null)
                          {
                              Console.WriteLine("RequestId: " + response.Body.RequestId);
                              Console.WriteLine("Code: " + response.Body.Code);
                              Console.WriteLine("Message: " + response.Body.Message);
                              if (response.Body.Data != null)
                              {
                                  Console.WriteLine("TaskId: " + response.Body.Data.TaskId);
                                  Console.WriteLine("LiveId: " + response.Body.Data.LiveId);
                                  Console.WriteLine("RiskLevel: " + response.Body.Data.RiskLevel);
                                  Console.WriteLine("Url: " + response.Body.Data.Url);
                                  Console.WriteLine("SliceDetails: " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails));
                              }
                          }
                      }
                  }
                  catch (TeaException error)
                  {
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("Error: " + error);
                  }
                  catch (Exception _error)
                  {
                      TeaException error = new TeaException(new Dictionary<string, object>
                      {
                          { "message", _error.Message }
                      });
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("Error: " + error);
                  }
              }
          }
      }

Moderasi video lokal

Skenario

Jika video berada di mesin lokal Anda dan tidak memiliki URL publik, unggah ke bucket Object Storage Service (OSS) yang disediakan oleh Content Moderation. Layanan Moderasi Video 2.0 kemudian dapat langsung mengakses OSS untuk mengambil video guna dimoderasi.

  1. Jalankan perintah berikut untuk menambahkan dependensi yang diperlukan.

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4

    Instal SDK OSS:

    Instal menggunakan NuGet 
    1. Jika NuGet belum diinstal di Visual Studio Anda, instal NuGet terlebih dahulu.
    2. Di Visual Studio, buat proyek atau buka proyek yang sudah ada, lalu pilih Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
    3. Cari aliyun.oss.sdk. Di hasil pencarian, temukan Aliyun.OSS.SDK (untuk .NET Framework) atau Aliyun.OSS.SDK.NetCore.
  2. Integrasikan C# SDK.

    • Kirim tugas moderasi video

      // File ini dihasilkan secara otomatis, jangan diedit. Terima kasih.
      
      using System;
      using Newtonsoft.Json;
      using Aliyun.OSS;
      
      namespace AlibabaCloud.SDK.Green20220302
      {
          public class VideoModerationAutoRoute
          {
              // Token untuk unggah file.
              public static Dictionary<String, Models.DescribeUploadTokenResponse> tokenDic =
                  new Dictionary<String, Models.DescribeUploadTokenResponse>();
      
              // Klien untuk unggah file.
              public static OssClient ossClient = null;
      
              // Menentukan apakah layanan diterapkan di VPC.
              public static Boolean isVPC = false;
      
              public static void Main(string[] args)
              {
                  /**
                  * Pasangan AccessKey memberikan izin penuh ke akun Alibaba Cloud Anda. Kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode Anda. Hal ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan akun Anda.
                  * Praktik umum adalah membaca kredensial dari variabel lingkungan:
                  * Untuk mengambil ID AccessKey pengguna RAM, panggil Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID").
                  * Untuk mengambil rahasia AccessKey pengguna RAM, panggil Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET").
                  */
                  String accessKeyId = "Kami merekomendasikan agar Anda mengambil ID AccessKey dari variabel lingkungan.";
                  String accessKeySecret = "Kami merekomendasikan agar Anda mengambil rahasia AccessKey dari variabel lingkungan.";
                  // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
                  String endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                  Models.VideoModerationResponse response = invoke(
                      accessKeyId,
                      accessKeySecret,
                      endpoint
                  );
      
                  Console.WriteLine(response.Body.RequestId);
                  Console.WriteLine(JsonConvert.SerializeObject(response.Body));
              }
      
              // Membuat klien.
              public static Client createClient(
                  String accessKeyId,
                  String accessKeySecret,
                  String endpoint
              )
              {
                  AlibabaCloud.OpenApiClient.Models.Config config =
                      new AlibabaCloud.OpenApiClient.Models.Config
                      {
                          AccessKeyId = accessKeyId,
                          AccessKeySecret = accessKeySecret,
                          // Tentukan proxy HTTP.
                          //HttpProxy = "http://10.10.xx.xx:xxxx",
                          // Tentukan proxy HTTPS.
                          //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999",
                          // Titik akhir layanan.
                          Endpoint = endpoint,
                      };
                  return new Client(config);
              }
      
              // Membuat klien untuk unggah file.
              private static OssClient getOssClient(
                  Models.DescribeUploadTokenResponse tokenResponse,
                  Boolean isVPC
              )
              {
                  var tokenData = tokenResponse.Body.Data;
                  if (isVPC)
                  {
                      return new OssClient(
                          tokenData.OssInternalEndPoint,
                          tokenData.AccessKeyId,
                          tokenData.AccessKeySecret,
                          tokenData.SecurityToken
                      );
                  }
                  else
                  {
                      return new OssClient(
                          tokenData.OssInternetEndPoint,
                          tokenData.AccessKeyId,
                          tokenData.AccessKeySecret,
                          tokenData.SecurityToken
                      );
                  }
              }
      
              // Mengunggah file.
              public static String uploadFile(
                  String filePath,
                  Models.DescribeUploadTokenResponse tokenResponse
              )
              {
                  // Buat instance OssClient.
                  ossClient = getOssClient(tokenResponse, isVPC);
                  var tokenData = tokenResponse.Body.Data;
      
                  String objectName =
                      tokenData.FileNamePrefix
                      + Guid.NewGuid().ToString()
                      + "."
                      + filePath.Split(".").GetValue(1);
                  // Unggah file.
                  ossClient.PutObject(tokenData.BucketName, objectName, filePath);
                  return objectName;
              }
      
              // Mengirimkan permintaan moderasi.
              public static Models.VideoModerationResponse invoke(
                  String accessKeyId,
                  String accessKeySecret,
                  String endpoint
              )
              {
                  // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
                  Client client = createClient(accessKeyId, accessKeySecret, endpoint);
      
                  // Atur opsi runtime. Pengaturan hanya berlaku untuk permintaan yang menggunakan instance RuntimeOptions ini.
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions =
                      new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
      
                  // Jalur lengkap file lokal. Contoh: D:\\localPath\\exampleFile.mp4.
                  String filePath = "D:\\localPath\\exampleFile.mp4";
                  try
                  {
                      // Dapatkan token sementara untuk unggah file.
                      if (
                          !tokenDic.ContainsKey(endpoint)
                          || tokenDic[endpoint].Body.Data.Expiration
                              <= DateTimeOffset.Now.ToUnixTimeSeconds()
                      )
                      {
                          var tokenResponse = client.DescribeUploadToken();
                          tokenDic[endpoint] = tokenResponse;
                      }
                      // Unggah file.
                      String objectName = uploadFile(filePath, tokenDic[endpoint]);
                      // Bangun permintaan moderasi.
                      Models.VideoModerationRequest videoModerationRequest =
                          new Models.VideoModerationRequest();
                      // Layanan. Contoh: videoDetection_global.
                        videoModerationRequest.Service = "videoDetection_global";
                      Dictionary<string, object> task = new Dictionary<string, object>();
                      // File yang akan dimoderasi.
                      task.Add("ossBucketName", tokenDic[endpoint].Body.Data.BucketName);
                      task.Add("ossObjectName", objectName);
                      // ID data.
                      task.Add("dataId", Guid.NewGuid().ToString());
                      videoModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task);
                      // Panggil API untuk mendapatkan hasil moderasi.
                      Models.VideoModerationResponse response = client.VideoModerationWithOptions(
                          videoModerationRequest,
                          runtimeOptions
                      );
                      return response;
                  }
                  catch (Exception _err)
                  {
                      Console.WriteLine(_err);
                      return null;
                  }
              }
          }
      }
    • Ambil hasil tugas moderasi video

      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Gunakan pasangan AccessKey untuk menginisialisasi klien.
               * @param accessKeyId
               * @param accessKeySecret
               * @return Client
               * @throws Exception
               */
              public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret)
              {
                  AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                  {
                      AccessKeyId = accessKeyId,
                      AccessKeySecret = accessKeySecret,
                  };
                  // Titik akhir layanan.
                  config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                  return new AlibabaCloud.SDK.Green20220302.Client(config);
              }
      
              public static void Main(string[] args)
              {
                  // Kami merekomendasikan menggunakan metode yang lebih aman, seperti kredensial STS. Jika Anda menggunakan pasangan AccessKey untuk memanggil operasi API, pasangan AccessKey Anda mungkin bocor.
                  /**
                  * Pasangan AccessKey memberikan izin penuh ke akun Alibaba Cloud Anda. Kami merekomendasikan menggunakan pengguna RAM untuk akses API dan O&M rutin.
                  * Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode Anda. Hal ini dapat menyebabkan kebocoran kredensial dan mengompromikan keamanan akun Anda.
                  * Praktik umum adalah membaca kredensial dari variabel lingkungan:
                  * Untuk mengambil ID AccessKey pengguna RAM, panggil Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID").
                  * Untuk mengambil rahasia AccessKey pengguna RAM, panggil Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET").
                  */
                  string accessKeyId = "Kami merekomendasikan agar Anda mengambil ID AccessKey dari variabel lingkungan.";
                  string accessKeySecret = "Kami merekomendasikan agar Anda mengambil rahasia AccessKey dari variabel lingkungan.";
                  // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Bangun permintaan moderasi.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest();
                  // Layanan moderasi.
                  videoModerationResultRequest.Service="videoDetection_global";
                  Dictionary<String,Object> task=new Dictionary<string, object>();
                  // ID tugas yang akan dikueri.
                  task.Add("taskId","");
                  videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                  // Buat instance RuntimeOptions dan atur parameter runtime.
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                  runtime.ReadTimeout = 10000;
                  runtime.ConnectTimeout = 10000;
                  try
                  {
                      // Ambil hasil moderasi.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response= client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime);
                  if(response is not null){
                      Console.WriteLine("response statusCode : "+response.StatusCode);
                      if (response.Body is not null){
                      Console.WriteLine("requestId : " + response.Body.RequestId);
                      Console.WriteLine("code : " + response.Body.Code);
                      Console.WriteLine("message : " + response.Body.Message);
                          if(response.Body.Data is not null){
                              Console.WriteLine("taskId : " + response.Body.Data.TaskId);
                              Console.WriteLine("riskLevel : " + response.Body.Data.RiskLevel);
                              Console.WriteLine("liveId : " + response.Body.Data.LiveId);
                              Console.WriteLine("url : " + response.Body.Data.Url);
                              Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails));
                          }
                      }
                  }
                  }
                  catch (TeaException error)
                  {
                      // Cetak kesalahan jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
                  catch (Exception _error)
                  {
                      TeaException error = new TeaException(new Dictionary<string, object>
                      {
                          { "message", _error.Message }
                      });
                      // Cetak kesalahan jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
              }
          }
      }

Moderasi video di OSS

Kasus penggunaan

Untuk memoderasi file video yang disimpan di Alibaba Cloud Object Storage Service (OSS), buat peran layanan yang memberikan akses layanan Content Moderation ke OSS. Layanan Moderasi Video V2.0 menggunakan peran ini untuk mengambil dan memoderasi file tersebut. Anda dapat membuat peran layanan di halaman Otorisasi Akses Sumber Daya Cloud.

  1. Jalankan perintah berikut untuk mengimpor dependensi yang diperlukan.

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4
  2. Integrasikan C# SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      using System;
      using System.Collections.Generic;
      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien dengan pasangan AccessKey.
               * @param accessKeyId
               * @param accessKeySecret
               * @return Client
               * @throws Exception
               */
              public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret)
              {
                  AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                  {
                      AccessKeyId = accessKeyId,
                      AccessKeySecret = accessKeySecret,
                  };
                  // Titik akhir layanan.
                  config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                  return new AlibabaCloud.SDK.Green20220302.Client(config);
              }
      
              public static void Main(string[] args)
              {
                  // Kebocoran pasangan AccessKey Anda di kode proyek dapat mengompromikan keamanan semua sumber daya di akun Anda.
                  // Kode berikut hanya untuk referensi. Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk mengelola kredensial Anda.
                  /**
                  * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
                  * Kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey di kode proyek Anda.
                  * Jika tidak, pasangan AccessKey Anda mungkin bocor, yang mengancam keamanan semua sumber daya di akun Anda.
                  * Praktik umum adalah membaca kredensial dari variabel lingkungan:
                  * Dapatkan ID AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                  * Dapatkan rahasia AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                  */
                  string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                  string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                  // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien dan hindari pembentukan koneksi baru untuk setiap permintaan.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Bangun permintaan moderasi.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest();
                  // Tentukan layanan moderasi.
                  videoModerationRequest.Service="videoDetection_global";
                  Dictionary<String,Object> serviceParameters=new Dictionary<string, object>();
                  // Contoh melewatkan parameter untuk file OSS.
                  serviceParameters.Add("ossBucketName","your-bucket-name");
                  serviceParameters.Add("ossObjectName","test/sample.mp4");
                  serviceParameters.Add("ossRegionId","ap-southeast-1");
                  videoModerationRequest.ServiceParameters=JsonConvert.SerializeObject(serviceParameters);
                  // Buat instance RuntimeOptions dan atur parameter runtime.
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                  runtime.ReadTimeout = 10000;
                  runtime.ConnectTimeout = 10000;
                  try
                  {
                      // Kirim tugas moderasi.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationResponse response= client.VideoModerationWithOptions(videoModerationRequest, runtime);
                  if(response is not null){
                      Console.WriteLine("response statusCode: "+response.StatusCode);
                      if (response.Body is not null){
                      Console.WriteLine("requestId: " + response.Body.RequestId);
                      Console.WriteLine("code: " + response.Body.Code);
                      Console.WriteLine("message: " + response.Body.Message);
                          if(response.Body.Data is not null){
                              Console.WriteLine("taskId: " + response.Body.Data.TaskId);
                          }
                      }
                  }
                  }
                  catch (TeaException error)
                  {
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error: " + error);
                  }
                  catch (Exception _error)
                  {
                      TeaException error = new TeaException(new Dictionary<string, object>
                      {
                          { "message", _error.Message }
                      });
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error: " + error);
                  }
              }
          }
      }
    • Kode contoh untuk mengambil hasil moderasi video

      using System;
      using System.Collections.Generic;
      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien dengan pasangan AccessKey.
               * @param accessKeyId
               * @param accessKeySecret
               * @return Client
               * @throws Exception
               */
              public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret)
              {
                  AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                  {
                      AccessKeyId = accessKeyId,
                      AccessKeySecret = accessKeySecret,
                  };
                  // Titik akhir layanan.
                  config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                  return new AlibabaCloud.SDK.Green20220302.Client(config);
              }
      
              public static void Main(string[] args)
              {
                  // Kebocoran pasangan AccessKey Anda di kode proyek dapat mengompromikan keamanan semua sumber daya di akun Anda.
                  // Kode berikut hanya untuk referensi. Kami merekomendasikan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk mengelola kredensial Anda.
                  /**
                  * Pasangan AccessKey untuk akun Alibaba Cloud memiliki izin pada semua API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk akses API atau O&M harian.
                  * Kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan Rahasia AccessKey di kode proyek Anda.
                  * Jika tidak, pasangan AccessKey Anda mungkin bocor, yang mengancam keamanan semua sumber daya di akun Anda.
                  * Praktik umum adalah membaca kredensial dari variabel lingkungan:
                  * Dapatkan ID AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                  * Dapatkan rahasia AccessKey pengguna RAM: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                  */
                  string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                  string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                  // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien dan hindari pembentukan koneksi baru untuk setiap permintaan.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Bangun permintaan kueri.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest();
                  // Tentukan layanan moderasi.
                  videoModerationResultRequest.Service="videoDetection_global";
                  Dictionary<String,Object> serviceParameters=new Dictionary<string, object>();
                  // ID tugas yang akan dikueri.
                  serviceParameters.Add("taskId","<your_task_id>");
                  videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(serviceParameters);
                  // Buat instance RuntimeOptions dan atur parameter runtime.
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                  runtime.ReadTimeout = 10000;
                  runtime.ConnectTimeout = 10000;
                  try
                  {
                      // Kirim permintaan kueri.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response= client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime);
                  if(response is not null){
                      Console.WriteLine("response statusCode: "+response.StatusCode);
                      if (response.Body is not null){
                      Console.WriteLine("requestId: " + response.Body.RequestId);
                      Console.WriteLine("code: " + response.Body.Code);
                      Console.WriteLine("message: " + response.Body.Message);
                          if(response.Body.Data is not null){
                              Console.WriteLine("taskId: " + response.Body.Data.TaskId);
                              Console.WriteLine("liveId: " + response.Body.Data.LiveId);
                              Console.WriteLine("riskLevel: " + response.Body.Data.RiskLevel);
                              Console.WriteLine("url: " + response.Body.Data.Url);
                              Console.WriteLine("sliceDetails: " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails));
                          }
                      }
                  }
                  }
                  catch (TeaException error)
                  {
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error: " + error);
                  }
                  catch (Exception _error)
                  {
                      TeaException error = new TeaException(new Dictionary<string, object>
                      {
                          { "message", _error.Message }
                      });
                      // Jika terjadi kesalahan, cetak detail kesalahan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error: " + error);
                  }
              }
          }
      }

Node.js SDK

Lihat kode sumber untuk Node.js SDK.

Layanan ini mendukung tiga metode deteksi video.

Video yang dapat diakses publik

Kasus penggunaan

Jika video dapat diakses melalui URL publik, layanan Moderasi Video V2.0 dapat mengambilnya berdasarkan URL-nya untuk melakukan moderasi.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    npm install @alicloud/green20220302@3.2.4
  2. Integrasikan Node.js SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
      // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda. Hard-coding kredensial Anda dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
                  endpoint: `green-cip.ap-southeast-1.aliyuncs.com`,
              });
              return new Green20220302.default(config);
          }
      
          static async main() {
              const client = Client.createClient();
              // Bangun objek permintaan.
              const videoModerationRequest = new Green20220302.VideoModerationRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  // URL video untuk dimoderasi.
                  "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"})
              });
              // Buat objek opsi runtime.
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons.
                  const response = await client.videoModerationWithOptions(videoModerationRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati di proyek Anda dan jangan mengabaikannya.
                  // Pesan kesalahan.
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
      // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda. Hard-coding kredensial Anda dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
                  endpoint: `green-cip.ap-southeast-1.aliyuncs.com`,
              });
              return new Green20220302.default(config);
          }
      
          static async main() {
              const client = Client.createClient();
              // Bangun objek permintaan.
              const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({"taskId":"<ID tugas moderasi video yang hasilnya ingin Anda kueri>"})
              });
              // Buat objek opsi runtime.
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons.
                  const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati di proyek Anda dan jangan mengabaikannya.
                  // Pesan kesalahan.
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();

Video lokal

Kasus Penggunaan

Untuk memoderasi video lokal yang tidak memiliki URL publik, unggah ke bucket Object Storage Service (OSS) yang disediakan oleh Content Moderation. Layanan Moderasi Video V2.0 kemudian mengambil video langsung dari OSS untuk moderasi.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    npm install @alicloud/green20220302@3.2.4
  2. Integrasikan Node.js SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      const RPCClient = require("@alicloud/pop-core");
      const OSS = require('ali-oss');
      const { v4: uuidv4 } = require('uuid');
      const path = require("path");
      
      // Menentukan apakah layanan diterapkan di VPC.
      var isVPC = false;
      // Token untuk unggah file.
      var tokenDic = new Array();
      // Klien untuk unggah file.
      var ossClient;
      
      // Buat klien untuk unggah file.
      function createClient(accessKeyId, accessKeySecret, endpoint) {
          return new RPCClient({
              accessKeyId: accessKeyId,
              accessKeySecret: accessKeySecret,
              endpoint: endpoint,
              apiVersion: '2022-03-02',
              // Atur proxy HTTP.
              //httpProxy: "http://xx.xx.xx.xx:xxxx",
              // Atur proxy HTTPS.
              //httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
          });
      }
      
      // Buat klien untuk unggah file.
      function getOssClient(tokenData, isVPC) {
          if (isVPC) {
              ossClient = new OSS({
                  accessKeyId: tokenData['AccessKeyId'],
                  accessKeySecret: tokenData['AccessKeySecret'],
                  stsToken: tokenData['SecurityToken'],
                  endpoint: tokenData['OssInternalEndPoint'],
                  bucket: tokenData['BucketName'],
              });
          } else {
              ossClient = new OSS({
                  accessKeyId: tokenData['AccessKeyId'],
                  accessKeySecret: tokenData['AccessKeySecret'],
                  stsToken: tokenData['SecurityToken'],
                  endpoint: tokenData['OssInternetEndPoint'],
                  bucket: tokenData['BucketName'],
              });
          }
      }
      
      // Kirim tugas moderasi.
      async function invoke(accessKeyId, accessKeySecret, endpoint) {
          // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
          var client = createClient(accessKeyId, accessKeySecret, endpoint);
          var requestOption = {
              method: 'POST',
              formatParams: false,
          };
          // Jalur lengkap file lokal. Contoh: D:\\localPath\\exampleFile.mp4.
          var filePath = 'D:\\localPath\\exampleFile.mp4';
      
          // Dapatkan token untuk unggah file.
          if (tokenDic[endpoint] == null || tokenDic[endpoint]['Expiration'] <= Date.parse(new Date() / 1000)) {
              var tokenResponse = await client.request('DescribeUploadToken', '', requestOption)
              tokenDic[endpoint] = tokenResponse.Data;
          }
      
          // Dapatkan klien untuk unggah file.
          getOssClient(tokenDic[endpoint], isVPC)
          var split = filePath.split(".");
          var objectName;
          if (split.length > 1) {
              objectName = tokenDic[endpoint].FileNamePrefix + uuidv4() + "." + split[split.length - 1];
          } else {
              objectName = tokenDic[endpoint].FileNamePrefix + uuidv4();
          }
          // Unggah file.
          const result = await ossClient.put(objectName, path.normalize(filePath));
      
          // Buat permintaan API moderasi dan atur parameternya.
          var params = {
              // Layanan moderasi video. Contoh: videoDetection_global
              "Service": "videoDetection_global",
              // Informasi tentang video lokal yang diunggah.
              "ServiceParameters": JSON.stringify({
                  "ossBucketName": tokenDic[endpoint].BucketName,
                  "ossObjectName": objectName
              })
          }
          // Panggil API untuk mendapatkan hasil moderasi.
          return await client.request('VideoModeration', params, requestOption);
      }
      
      function main() {
          /**
          * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
          * Kami sangat menyarankan agar Anda tidak hard-code ID AccessKey dan rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Anda mungkin dikompromikan.
          * Metode umum untuk mendapatkan variabel lingkungan:
          * Dapatkan ID AccessKey pengguna RAM: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID']
          * Dapatkan rahasia AccessKey pengguna RAM: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          */
          const accessKeyId = 'Kami merekomendasikan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan.'
          const accessKeySecret = 'Kami merekomendasikan agar Anda mendapatkan rahasia AccessKey pengguna RAM dari variabel lingkungan.'
          // Ubah wilayah dan titik akhir berdasarkan kebutuhan aktual Anda.
          var endpoint = "https://green-cip.ap-southeast-1.aliyuncs.com"
      
          try {
              var response;
              // Panggil API untuk mendapatkan hasil moderasi.
              invoke(accessKeyId, accessKeySecret, endpoint).then(function (response) {
                  console.log(JSON.stringify(response))
              })
          } catch (err) {
              console.log(err);
          }
      }
      
      main();
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
      // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda. Hard-coding kredensial Anda dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
                  endpoint: `green-cip.ap-southeast-1.aliyuncs.com`,
              });
              return new Green20220302.default(config);
          }
      
          static async main() {
              const client = Client.createClient();
              // Bangun objek permintaan.
              const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({"taskId":"<ID tugas moderasi video yang hasilnya ingin Anda kueri>"})
              });
              // Buat objek opsi runtime.
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons.
                  const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati di proyek Anda dan jangan mengabaikannya.
                  // Pesan kesalahan.
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();

Video OSS

Kasus penggunaan

Jika file video yang perlu Anda moderasi disimpan di Alibaba Cloud Object Storage Service (OSS), buat peran layanan untuk mengizinkan layanan Content Moderation mengakses OSS. Layanan Moderasi Video V2.0 menggunakan peran layanan ini untuk mengambil file dari OSS untuk moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menginstal dependensi.

    npm install @alicloud/green20220302@3.2.4
  2. Integrasikan Node.js SDK.

    • Kode contoh untuk mengirimkan tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
      // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda. Hard-coding kredensial Anda dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
                  endpoint: `green-cip.ap-southeast-1.aliyuncs.com`,
              });
              return new Green20220302.default(config);
          }
      
          static async main() {
              const client = Client.createClient();
              // Bangun objek permintaan.
              const videoModerationRequest = new Green20220302.VideoModerationRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({
                  // Wilayah tempat bucket yang menyimpan file berada. Contoh: cn-shanghai
                  "ossRegionId": "cn-shanghai",
                  // Nama bucket yang menyimpan file. Contoh: bucket001
                  "ossBucketName": "bucket001",
                  // File yang akan dimoderasi. Contoh: video/001.mp4
                  "ossObjectName": "video/001.mp4",})
              });
              // Buat objek opsi runtime.
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons.
                  const response = await client.videoModerationWithOptions(videoModerationRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati di proyek Anda dan jangan mengabaikannya.
                  // Pesan kesalahan.
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Untuk meningkatkan kinerja, gunakan kembali instance klien untuk menghindari pembentukan koneksi baru untuk setiap permintaan.
      // Untuk alasan keamanan, jangan hard-code pasangan AccessKey Anda di kode Anda. Hard-coding kredensial Anda dapat menyebabkan kebocoran dan mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi.
      class Client {
          static createClient() {
              const config = new OpenApi.Config({
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
                  endpoint: `green-cip.ap-southeast-1.aliyuncs.com`,
              });
              return new Green20220302.default(config);
          }
      
          static async main() {
              const client = Client.createClient();
              // Bangun objek permintaan.
              const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({"taskId":"<ID tugas moderasi video yang hasilnya ingin Anda kueri>"})
              });
              // Buat objek opsi runtime.
              const runtime = new Util.RuntimeOptions();
              try {
                  // Kirim permintaan dan dapatkan respons.
                  const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime);
                  console.log(JSON.stringify(response.body));
              } catch (error) {
                  // Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati di proyek Anda dan jangan mengabaikannya.
                  // Pesan kesalahan.
                  console.log('Terjadi kesalahan:', error.message);
              }
          }
      }
      
      Client.main();

Permintaan HTTPS langsung

  • Invocation Method

    Titik akhir layanan: https://green-cip.{region}.aliyuncs.com

    Protokol: HTTPS

    Metode: POST

  • Common request parameters

    Panggilan API untuk moderasi audio enhanced terdiri dari parameter permintaan umum dan parameter permintaan spesifik operasi. Semua panggilan API harus menyertakan parameter permintaan umum yang tercantum dalam tabel di bawah ini.

    Parameter

    Tipe

    Wajib

    Deskripsi

    Format

    String

    Ya

    Format respons. Nilai yang valid:

    • JSON (default)

    • XML

    Versi

    String

    Ya

    Versi API, dalam format YYYY-MM-DD. Versi saat ini adalah 2022-03-02.

    AccessKeyId

    String

    Ya

    ID kunci akses Alibaba Cloud Anda.

    Signature

    String

    Ya

    String signature. Untuk detail perhitungan, lihat bagian "Mekanisme penandatanganan".

    SignatureMethod

    String

    Ya

    Metode penandatanganan. Satu-satunya nilai yang didukung adalah HMAC-SHA1.

    Timestamp

    String

    Ya

    Stempel waktu permintaan dalam UTC, diformat sesuai standar ISO 8601.

    Format: yyyy-MM-ddTHH:mm:ssZ.

    Contoh, 09:13:14 pada 12 Desember 2022 (UTC+8) direpresentasikan sebagai 2022-12-12T01:13:14Z.

    SignatureVersion

    String

    Ya

    Versi algoritma signature. Tetapkan nilainya ke 1.0.

    SignatureNonce

    String

    Ya

    Bilangan acak unik (nonce) yang harus unik untuk setiap permintaan untuk mencegah serangan replay jaringan.

    Action

    String

    Ya

    Nilai yang valid:

    • VideoModeration

    • VideoModerationResult

  • Common response parameters

    Sistem mengembalikan ID permintaan unik (RequestId) untuk setiap panggilan API, terlepas dari hasilnya. Parameter respons lainnya bervariasi tergantung API spesifik yang dipanggil.

    {
        "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2",
        "Message":"SUCCESS",
        "Data":{
            "TaskId":"vi_f_O5xxxxxxxxxxxxxxqa-1****"
        },
        "Code":200
    }
  • Code examples

    Contoh berikut diformat agar mudah dibaca. Respons API aktual tidak diformat dengan jeda baris atau indentasi.

    • Mengirimkan tugas moderasi

      Permintaan Contoh

      http://green-cip.ap-southeast-1.aliyuncs.com/
      ?Format=JSON
      &Version=2022-03-02
      &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D
      &SignatureMethod=Hmac-SHA1
      &SignatureNonce=15215528852396
      &SignatureVersion=1.0
      &Action=VideoModeration
      &AccessKeyId=123****cip
      &Timestamp=2023-02-03T12:00:00Z
      &Service=videoDetection_global
      &ServiceParameters={"url": "https://xxxxxx.aliyuncs.com/sample/****.mp4"}

      Respons Contoh

      {
          "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2",
          "Message":"SUCCESS",
          "Data":{
              "TaskId":"vi_f_O5xxxxxxxxxxxxxxqa-1x****"
          },
          "Code":200
      }
    • Mengkueri hasil tugas

      Permintaan Contoh

      http://green-cip.ap-southeast-1.aliyuncs.com/
      ?Format=JSON
      &Version=2022-03-02
      &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D
      &SignatureMethod=Hmac-SHA1
      &SignatureNonce=15215528852396
      &SignatureVersion=1.0
      &Action=VideoModerationResult
      &AccessKeyId=123****cip
      &Timestamp=2023-02-03T12:00:00Z
      &Service=videoDetection_global
      &ServiceParameters={"taskId": "vi_f_O5zxxxxxxxxxxxxxxxx-1x****"}

      Respons Contoh

      {
          "Code": 200,
          "RequestId": "25106421-XXXX-XXXX-XXXX-15DA5AAAC546",
          "Message": "success finished",
          "Data": {
              "DataId": "ABCDEF-TESTDATAID",
              "TaskId": "vi_f_VnI6BO74NXFIZm7XXXXXXXXXXXXXX",
              "RiskLevel": "medium",
              "FrameResult": {
                  "FrameNum": 2,
                  "FrameSummarys": [
                      {
                          "Label": "violent_explosion",
                          "Description": "Unsur yang diduga terkait kembang api",
                          "LabelSum": 8
                      },
                      {
                          "Label": "sexual_cleavage",
                          "Description": "Konten yang diduga mengandung unsur ketelanjangan parsial atau sugestif seksual",
                          "LabelSum": 8
                      }
                  ],
                  "RiskLevel": "medium",
                  "Frames": [
                      {
                          "Offset": 1,
                          "RiskLevel": "none",
                          "Results": [
                              {
                                  "Result": [
                                      {
                                          "Label": "nonLabel",
                                          "Description": "Tidak ditemukan risiko"
                                      }
                                  ],
                                  "Service": "baselineCheck"
                              },
                              {
                                  "Result": [
                                      {
                                          "Label": "nonLabel"
                                      }
                                  ],
                                  "Service": "baselineCheck_pro"
                              }
                          ],
                          "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test1.jpg"
                      },
                      {
                          "Offset": 2,
                          "RiskLevel": "medium",
                          "Results": [
                              {
                                  "Result": [
                                      {
                                          "Confidence": 74.1,
                                          "Label": "violent_explosion",
                                          "Description": "Unsur yang diduga terkait kembang api"
                                      }
                                  ],
                                  "Service": "baselineCheck"
                              },
                              {
                                  "Result": [
                                      {
                                          "Confidence": 1,
                                          "Label": "sexual_cleavage",
                                          "Description": "Konten yang diduga mengandung unsur ketelanjangan parsial atau sugestif seksual"
                                      }
                                  ],
                                  "Service": "baselineCheck_pro"
                              }
                          ],
                          "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test2.jpg"
                      }
                  ]
              }
          }
      }
  • Signing mechanism

    Layanan moderasi audio enhanced mengotentikasi setiap permintaan dengan menggunakan signature. Layanan ini menggunakan metode enkripsi simetris dengan ID kunci akses dan rahasia kunci akses untuk memverifikasi identitas pengirim.

    Alibaba Cloud mengeluarkan ID kunci akses dan rahasia kunci akses Anda, yang dapat Anda kelola di situs webnya. Rahasia kunci akses digunakan untuk mengenkripsi string signature untuk verifikasi sisi server. Simpan rahasia kunci akses Anda secara rahasia.

    Untuk menandatangani permintaan, ikuti langkah-langkah berikut:

    1. Buat string kueri kanonis dari parameter permintaan.

      1. Urutkan semua parameter permintaan (termasuk parameter umum dan spesifik operasi, tetapi tidak termasuk parameter Signature) berdasarkan nama parameter secara leksikografis.

      2. Encode nama dan nilai parameter yang diurutkan menggunakan encoding URL UTF-8.

        Catatan

        Sebagian besar pustaka encoding URL, seperti java.net.URLEncoder di Java, mengikuti aturan untuk tipe MIME application/x-www-form-urlencoded. Anda dapat menggunakan pustaka semacam itu untuk encoding, tetapi Anda harus mengganti tanda plus (+) dengan %20, tanda bintang (*) dengan %2A, dan %7E dengan tanda tilde (~).

        Aturan encoding URL adalah sebagai berikut:

        • Jangan encode karakter berikut: huruf kapital (A-Z), huruf kecil (a-z), angka (0-9), tanda hubung (-), garis bawah (_), titik (.), dan tanda tilde (~).

        • Karakter lain diencode dalam format %XY, di mana XY adalah representasi heksadesimal dari kode ASCII karakter tersebut. Misalnya, tanda kutip Inggris (") diencode sebagai %22.

        • Karakter UTF-8 yang diperluas diencode dalam format %XY%ZA….

        • Perhatikan bahwa karakter spasi diencode sebagai %20, bukan tanda plus (+).

      3. Gabungkan setiap nama parameter yang diencode dan nilainya dengan tanda sama dengan (=).

      4. Gabungkan pasangan 'nama=nilai' ini dalam urutan aslinya yang diurutkan, menggunakan tanda ampersand (&), untuk membuat string kueri kanonis.

    2. Bangun string-to-sign dari string kueri kanonis sebagai berikut:

      StringToSign=
      HTTPMethod + "&" +
      percentEncode("/") + "&" +
      percentEncode(CanonicalizedQueryString)
      Catatan

      HTTPMethod adalah metode HTTP yang digunakan untuk mengirimkan permintaan, seperti POST. percentEncode(/) adalah nilai yang diperoleh dengan meng-encode karakter garis miring (/) seperti yang dijelaskan di bagian a.ii. Nilainya adalah %2F. percentEncode(CanonicalQueryString) adalah string yang diperoleh dengan meng-encode string kueri kanonis dari bagian a.i seperti yang dijelaskan di bagian a.ii.

    3. Hitung nilai HMAC dari string yang akan ditandatangani sebagaimana didefinisikan dalam RFC2104.

      Catatan

      Perhatikan bahwa kunci yang digunakan untuk menghitung signature adalah Rahasia AccessKey Anda diikuti oleh karakter& (ASCII: 38). Algoritma hash yang digunakan adalah SHA1.

    4. Encode nilai HMAC dalam Base64 untuk mendapatkan string signature.

    5. Tambahkan string signature ke permintaan sebagai parameter Signature.

      Catatan

      Ingatlah untuk meng-encode string signature sesuai RFC 3986 sebelum menambahkannya ke permintaan.