全部产品
Search
文档中心

Content Moderation:SDK dan panduan integrasi Video Moderation 2.0

更新时间:Jan 07, 2026

Video Moderation 2.0 mendukung pemanggilan API melalui software development kit (SDK) maupun permintaan HTTPS native. Kami menyarankan penggunaan SDK untuk menyederhanakan integrasi karena SDK menangani detail seperti verifikasi signature dan konstruksi format body. Topik ini menjelaskan cara mengintegrasikan layanan Video Moderation 2.0.

Langkah 1: Aktifkan layanan

Buka halaman Aktifkan layanan Content Moderation 2.0 untuk mengaktifkan layanan Video Moderation 2.0. Setelah Anda memanggil operasi API, penagihan akan diterapkan secara otomatis berdasarkan penggunaan. Untuk informasi selengkapnya, lihat Penagihan.

Setelah mengaktifkan layanan Video Moderation 2.0, metode penagihan default adalah bayar sesuai pemakaian. Biaya harian dihitung berdasarkan penggunaan aktual Anda, dan Anda tidak dikenai biaya jika tidak memanggil layanan.

Langkah 2: Berikan izin kepada pengguna RAM

Sebelum mengintegrasikan dengan SDK atau API, berikan izin kepada pengguna Resource Access Management (RAM). Buat pasangan AccessKey untuk pengguna RAM tersebut, yang harus digunakan untuk menyelesaikan verifikasi identitas saat memanggil operasi API Alibaba Cloud. Untuk informasi selengkapnya, lihat Mendapatkan pasangan AccessKey.

Prosedur

  1. Masuk ke Konsol RAM sebagai administrator RAM.

  2. Buat pengguna RAM.

    Untuk informasi selengkapnya, lihat Membuat pengguna RAM.

  3. Berikan kebijakan sistem AliyunYundunGreenWebFullAccess kepada pengguna RAM.

    Untuk informasi selengkapnya, lihat Memberikan izin kepada pengguna RAM.

    Setelah menyelesaikan langkah-langkah di atas, Anda dapat memanggil API Content Moderation sebagai pengguna RAM.

Langkah 3: Instal dan integrasikan dengan layanan moderasi video

Wilayah berikut didukung:

Region

Public endpoint

VPC endpoint

Supported services

Singapore

green-cip.ap-southeast-1.aliyuncs.com

green-cip-vpc.ap-southeast-1.aliyuncs.com

videoDetection_global, videoDetectionByVL_global, liveStreamDetection_global, liveStreamDetectionByVL_global

US (Virginia)

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

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

videoDetection_global, liveStreamDetection_global

US (Silicon Valley)

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

Not available

Germany (Frankfurt)

green-cip.eu-central-1.aliyuncs.com

Not available

Catatan

Jika Anda memerlukan kode contoh SDK dalam bahasa pemrograman lain, Anda dapat melakukan debug operasi API di OpenAPI Explorer. Alat ini secara otomatis menghasilkan kode contoh SDK untuk operasi API yang sesuai. Operasi API berikut tersedia untuk debugging online:

Dalam kode SDK Alibaba Cloud, Anda dapat membuat kredensial akses default dengan mendefinisikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Saat memanggil operasi API layanan Alibaba Cloud, sistem akan secara langsung mengakses kredensial, membaca pasangan AccessKey Anda, lalu menyelesaikan autentikasi secara otomatis. Sebelum menggunakan kode contoh SDK, Anda harus mengonfigurasi variabel lingkungan terlebih dahulu. Untuk informasi selengkapnya, lihat Mengonfigurasi kredensial.

Untuk informasi selengkapnya tentang parameter API, lihat API Moderasi File Video 2.0 dan API Moderasi Aliran Video Langsung 2.0.

SDK untuk Java

Java 1.8 atau versi yang lebih baru didukung.

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

Tiga jenis moderasi video berikut didukung.

Mendeteksi video yang dapat diakses publik

Skenario

Jika video yang ingin Anda moderasi dapat diakses melalui internet, Video Moderation 2.0 dapat mengambil file tersebut menggunakan URL lalu melakukan moderasi.

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

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.11</version>
    </dependency>
  2. Integrasikan dengan SDK untuk Java.

    • Kode contoh untuk mengirim 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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("url", "https://xxx.oss.aliyuncs.com/xxx.mp4");
      
              VideoModerationRequest videoModerationRequest = new VideoModerationRequest();
              // Layanan moderasi: 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();
              }
          }
      }
    • Kode contoh: Mengambil 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 dikembalikan saat Anda mengirim tugas.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      
              VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
              // Layanan moderasi: 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 mengkueri hasil moderasi video. Code:" + result.getCode());
                      }
                  } else {
                      System.out.println("Permintaan gagal. Status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 dikembalikan saat Anda mengirim tugas.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
              VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
              
              videoModerationCancelRequest.setService("liveStreamDetection_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();
              }
          }
      }

Mendeteksi video lokal

Skenario

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

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

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

    Instal SDK OSS:

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

    • Kode contoh untuk mengirim 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;
      
          //Token yang digunakan untuk mengunggah file. Kunci adalah titik akhir dan nilainya adalah token.
          public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();
      
          //Klien untuk permintaan unggah file.
          public static OSS ossClient = null;
      
          /**
           * Buat klien 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);
              // Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              config.setEndpoint(endpoint);
              return new Client(config);
          }
      
          /**
           * Buat klien unggah file.
           *
           * @param tokenData
           * @param isVPC
           */
          public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
              //Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
              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());
              }
          }
      
          /**
           * Unggah 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
              Client client = createClient(accessKeyId, accessKeySecret, endpoint);
              RuntimeOptions runtime = new RuntimeOptions();
      
              //Jalur lengkap file lokal. Contoh: D:\localPath\exampleFile.mp4.
              String filePath = "D:\localPath\exampleFile.mp4";
              //Dapatkan token untuk 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));
      
              // Konstruksi 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: 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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");
               */
              String accessKeyId = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.";
              String accessKeySecret = "Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.";
              // Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 gagal. Code:" + code);
                          }
                      } else {
                          System.out.println("Permintaan gagal. Status:" + response.getStatusCode());
                      }
                  }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              } }
    • Kode contoh untuk 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 dikembalikan saat Anda mengirim tugas.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      
              VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
              // Layanan moderasi: 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 mengkueri hasil moderasi video. Code:" + result.getCode());
                      }
                  } else {
                      System.out.println("Permintaan gagal. Status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 dikembalikan saat Anda mengirim tugas.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
              VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
              
              videoModerationCancelRequest.setService("liveStreamDetection_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 di OSS

Skenario

Jika file video yang ingin Anda moderasi sudah disimpan di Object Storage Service (OSS), Anda dapat membuat peran layanan untuk memberikan izin Content Moderation mengakses OSS. Video Moderation 2.0 dapat mengambil file dari OSS melalui peran layanan lalu melakukan moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

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

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.11</version>
    </dependency>
  2. Integrasikan dengan SDK untuk Java.

    • Kode contoh untuk mengirim 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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();
              // Layanan moderasi: 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();
              }
          }
      }
    • Kode contoh untuk 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 dikembalikan saat Anda mengirim tugas.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
      
              VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
              // Layanan moderasi: 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 mengkueri hasil moderasi video. Code:" + result.getCode());
                      }
                  } else {
                      System.out.println("Permintaan gagal. Status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.");
              config.setAccessKeySecret("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.");
              //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
              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 dikembalikan saat Anda mengirim tugas.
              serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
      
              VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
              
              videoModerationCancelRequest.setService("liveStreamDetection_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();
              }
          }
      }

SDK untuk Python

Python 3.6 atau versi yang lebih baru didukung.

Untuk kode sumber, lihat Kode sumber SDK untuk Python.

Tiga jenis moderasi video berikut didukung.

Moderasi video yang dapat diakses melalui internet publik

Skenario

Jika video yang ingin Anda moderasi dapat diakses melalui internet, Video Moderation 2.0 dapat mengambil file tersebut menggunakan URL lalu melakukan moderasi.

  1. Anda dapat menjalankan perintah berikut untuk menginstal pip.

    pip install alibabacloud_green20220302==2.2.11
  2. Integrasikan dengan SDK untuk Python.

    • Kode contoh untuk mengirim tugas moderasi video

      #encoding:utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  # Metode umum untuk mendapatkan variabel lingkungan:
                  # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
                  # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
                  access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  #Timeout koneksi dalam milidetik (ms).
                  connect_timeout=3000,
                  #Timeout baca dalam milidetik (ms).
                  read_timeout=6000,
                  # Modifikasi wilayah dan titik akhir sesuai kebutuhan.
                  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: videoDetection_global
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation(videoModerationRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Dapatkan hasil tugas deteksi video

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  # Metode umum untuk mendapatkan variabel lingkungan:
                  # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
                  # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
                  access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  #Timeout koneksi dalam milidetik (ms).
                  connect_timeout=3000,
                  #Timeout baca dalam milidetik (ms).
                  read_timeout=6000,
                  # Modifikasi wilayah dan titik akhir sesuai kebutuhan.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat Anda mengirim tugas.
      serviceParameters = {
          "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
      }
      videoModerationResultRequest = models.VideoModerationResultRequest(
          # Layanan moderasi: videoDetection_global
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_result(videoModerationResultRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
          # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
          # Metode umum untuk mendapatkan variabel lingkungan:
          # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
          # Timeout koneksi dalam milidetik (ms).
          connect_timeout=10000,
          # Timeout baca dalam milidetik (ms).
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat Anda mengirim tugas.
      serviceParameters = {
          "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
      }
      videoModerationCancelRequest = models.VideoModerationCancelRequest(
          # Layanan moderasi
          service='liveStreamDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_cancel(videoModerationCancelRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

Mendeteksi video lokal

Skenario

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

  1. Jalankan perintah berikut untuk menginstal pip.

    pip install alibabacloud_green20220302==2.2.11

    Instal SDK OSS:

    pip install oss2
  2. Integrasikan dengan SDK untuk Python.

    • Kode contoh untuk mengirim tugas moderasi video

      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(
          # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
          # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
          # Metode umum untuk mendapatkan variabel lingkungan:
          # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
          #Timeout koneksi dalam milidetik (ms).
          connect_timeout=10000,
          #Timeout baca dalam milidetik (ms).
          read_timeout=10000,
          # Modifikasi wilayah dan titik akhir sesuai kebutuhan.
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      # Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      client = Client(config)
      
      bucket = None
      upload_token = None
      
      
      def get_oss_client(is_vpc):
          global upload_token
          global bucket
          if (upload_token == 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. Lakukan moderasi video.
          service_parameters = {
              'dataId': str(uuid.uuid4()),
              'ossBucketName': upload_token.bucket_name,
              'ossObjectName': object_name
          }
      
          video_moderation_request = models.VideoModerationRequest(
              # Layanan moderasi: videoDetection_global
              service='videoDetection_global',
              service_parameters=json.dumps(service_parameters)
          )
      
          # Buat instance RuntimeObject dan konfigurasikan parameter runtime.
          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:
                  # Permintaan berhasil.
                  # Dapatkan hasil moderasi.
                  result = response.body
                  print('Permintaan berhasil. Hasil:{}'.format(result))
                  if result.code == 200:
                      result_data = result.data
                      print('result: {}'.format(result_data))
              else:
                  print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
          except Exception as err:
              print(err)
      
      
      if __name__ == '__main__':
          # Jalur file lokal.
          file_path = 'D:/test/video/b652.mp4'
          # Menentukan apakah layanan diterapkan di VPC.
          is_vpc = False  # True
          video_moderation_by_local_file(file_path, is_vpc)
          
    • Mengambil hasil tugas deteksi video

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  # Metode umum untuk mendapatkan variabel lingkungan:
                  # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
                  # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
                  access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  #Timeout koneksi dalam milidetik (ms).
                  connect_timeout=3000,
                  #Timeout baca dalam milidetik (ms).
                  read_timeout=6000,
                  # Modifikasi wilayah dan titik akhir sesuai kebutuhan.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat Anda mengirim tugas.
      serviceParameters = {
          "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
      }
      videoModerationResultRequest = models.VideoModerationResultRequest(
          # Layanan moderasi: videoDetection_global
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_result(videoModerationResultRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
          # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
          # Metode umum untuk mendapatkan variabel lingkungan:
          # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
          # Timeout koneksi dalam milidetik (ms).
          connect_timeout=10000,
          # Timeout baca dalam milidetik (ms).
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat Anda mengirim tugas.
      serviceParameters = {
          "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
      }
      videoModerationCancelRequest = models.VideoModerationCancelRequest(
          # Layanan moderasi
          service='liveStreamDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_cancel(videoModerationCancelRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

Moderasi video di OSS

Skenario

Jika file video yang ingin Anda moderasi sudah disimpan di Object Storage Service (OSS), Anda dapat membuat peran layanan untuk memberikan izin Content Moderation mengakses OSS. Video Moderation 2.0 dapat mengambil file dari OSS melalui peran layanan lalu melakukan moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menginstal pip.

    pip install alibabacloud_green20220302==2.2.11
  2. Integrasikan dengan SDK untuk Python.

    • Kode contoh untuk mengirim tugas moderasi video

      #encoding:utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  # Metode umum untuk mendapatkan variabel lingkungan:
                  # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
                  # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
                  access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  #Timeout koneksi dalam milidetik (ms).
                  connect_timeout=3000,
                  #Timeout baca dalam milidetik (ms).
                  read_timeout=6000,
                  # Modifikasi wilayah dan titik akhir sesuai kebutuhan.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'ossBucketName': 'bucket_01',
          'ossObjectName': '20240307/07/28/test.flv',
          'ossRegionId': 'ap-southeast-1'
      }
      videoModerationRequest = models.VideoModerationRequest(
          # Layanan moderasi: videoDetection_global
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation(videoModerationRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Mengambil hasil tugas deteksi video

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
                  # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  # Metode umum untuk mendapatkan variabel lingkungan:
                  # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
                  # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
                  access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  #Timeout koneksi dalam milidetik (ms).
                  connect_timeout=3000,
                  #Timeout baca dalam milidetik (ms).
                  read_timeout=6000,
                  # Modifikasi wilayah dan titik akhir sesuai kebutuhan.
                  region_id='ap-southeast-1',
                  endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat Anda mengirim tugas.
      serviceParameters = {
          "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
      }
      videoModerationResultRequest = models.VideoModerationResultRequest(
          # Layanan moderasi: videoDetection_global
          service='videoDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_result(videoModerationResultRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              # Dapatkan hasil moderasi.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
          # Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
          # Metode umum untuk mendapatkan variabel lingkungan:
          # Dapatkan ID AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # Dapatkan rahasia AccessKey pengguna RAM: os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          access_key_secret='Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
          # Timeout koneksi dalam milidetik (ms).
          connect_timeout=10000,
          # Timeout baca dalam milidetik (ms).
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # ID tugas yang dikembalikan saat Anda mengirim tugas.
      serviceParameters = {
          "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
      }
      videoModerationCancelRequest = models.VideoModerationCancelRequest(
          # Layanan moderasi
          service='liveStreamDetection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.video_moderation_cancel(videoModerationCancelRequest)
          if response.status_code == 200:
              # Permintaan berhasil.
              result = response.body
              print('Permintaan berhasil. Hasil:{}'.format(result))
          else:
              print('Permintaan gagal. Status:{} ,Hasil:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

SDK untuk PHP

PHP 5.6 atau versi yang lebih baru didukung.

Untuk kode sumber, lihat Kode sumber SDK untuk PHP.

Tiga jenis moderasi video berikut didukung.

Mendeteksi video yang dapat diakses publik

Skenario

Jika video yang ingin Anda moderasi dapat diakses melalui internet, Video Moderation 2.0 dapat mengambil file tersebut menggunakan URL lalu melakukan moderasi.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    composer require alibabacloud/green-20220302 2.2.10
  2. Integrasikan dengan SDK untuk PHP.

    • Kode contoh untuk mengirim 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 pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationRequest();
      // Layanan moderasi: videoDetection_global untuk moderasi file video dan liveStreamDetection_global untuk moderasi aliran video 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("Permintaan gagal. 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());
      }
    • Mendapatkan kode contoh untuk 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationResultRequest();
      // Layanan moderasi: videoDetection untuk moderasi file video dan liveStreamDetection untuk moderasi aliran video 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("Permintaan gagal. 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("Gagal mengkueri 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());
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      <?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 pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationCancelRequest();
      // Layanan moderasi: videoDetection untuk moderasi file video dan liveStreamDetection untuk moderasi aliran video langsung.
      $request->service = "liveStreamDetection_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("Permintaan gagal. Code:" . $response->statusCode);
        }
      } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
      }

Mendeteksi video lokal

Skenario

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

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    composer require alibabacloud/green-20220302 2.2.10

    Instal SDK OSS:

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

    • Kode contoh untuk mengirim 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 untuk unggah file.
      $tokenArray = array();
      // Klien untuk permintaan unggah file.
      $ossClient = null;
      
      /**
       * Buat 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://username:password@xxx.xxx.xxx.xxx:9999",
              "endpoint" => $endpoint,
          ]);
          return new Green($config);
      }
      
      /**
       * Buat klien unggah file.
       * @param $tokenData
       * @return void
       */
      function create_upload_client($tokenData): void
      {
      
          global $isVPC;
          global $ossClient;
          // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
          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);
          }
      }
      
      /**
       * Unggah file.
       * @param $fileName
       * @param $tokenData
       * @return string
       * @throws \OSS\Core\OssException
       */
      function upload_file($filePath, $tokenData): string
      {
          global $ossClient;
          //Inisialisasi instance 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();
          }
          //Unggah file.
          $ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath);
          return $objectName;
      }
      
      /**
       * Kirim tugas moderasi.
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return VideoModerationResponse
       * @throws \OSS\Core\OssException
       */
      function invoke($accessKeyId, $accessKeySecret, $endpoint): VideoModerationResponse
      {
          global $tokenArray;
          // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
          $client = create_client($accessKeyId, $accessKeySecret, $endpoint);
          // Buat instance RuntimeObject dan konfigurasikan parameter runtime.
          $runtime = new RuntimeOptions([]);
          // Jalur lengkap file lokal. Contoh: D:\\localPath\\exampleFile.mp4.
          $filePath = "D:\\test\\video\\b652.mp4";
      
          //Dapatkan token untuk unggah file.
          if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) {
              $token = $client->describeUploadToken();
              $tokenArray[$endpoint] = $token->body->data;
          }
      
          // Unggah file.
          $objectName = upload_file($filePath, $tokenArray[$endpoint]);
      
          // Konstruksi parameter moderasi.
          $request = new VideoModerationRequest();
          // Contoh: videoDetection_global
            $request->service = "videoDetection_global";
          // Informasi OSS 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
      * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
      * Metode umum untuk mendapatkan 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 = 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.';
      $accessKeySecret = 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.';
      // Modifikasi 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());
      }
    • Kode contoh untuk 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationResultRequest();
      // Layanan moderasi: videoDetection untuk moderasi file video dan liveStreamDetection untuk moderasi aliran video 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("Permintaan gagal. 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("Gagal mengkueri 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());
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      <?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 pada semua operasi API. Kami menyarankan 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 dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor, yang mengancam keamanan semua sumber daya di akun Anda.
           * Cara umum untuk mendapatkan 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 menyarankan agar Anda mendapatkan ID AccessKey pengguna RAM dari variabel lingkungan',
          "accessKeySecret" => 'Kami menyarankan 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi sebanyak mungkin untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja deteksi.
      $client = new Green($config);
      
      $request = new VideoModerationCancelRequest();
      // Jenis moderasi: videoDetection untuk moderasi file video, dan liveStreamDetection untuk moderasi aliran video langsung.
      $request->service = "liveStreamDetection_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("pembatalan moderasi video tidak berhasil. 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 di OSS

Skenario

Jika file video yang ingin Anda moderasi sudah disimpan di Object Storage Service (OSS), Anda dapat membuat peran layanan untuk memberikan izin Content Moderation mengakses OSS. Video Moderation 2.0 dapat mengambil file dari OSS melalui peran layanan lalu melakukan moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    composer require alibabacloud/green-20220302 2.2.10
  2. Integrasikan dengan SDK untuk PHP.

    • Kode contoh untuk mengirim 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 pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationRequest();
      // Layanan moderasi: videoDetection_global untuk moderasi file video dan liveStreamDetection_global untuk moderasi aliran video langsung.
      $request->service = "videoDetection_global";
      $serviceParameters = array(
                // File yang akan dimoderasi. Contoh: video/001.mp4
              'ossObjectName' => 'video/001.mp4',
              // Wilayah tempat bucket berada. Contoh: cn-shanghai
              'ossRegionId' => 'ap-southeast-1',
                // Nama bucket. Contoh: bucket001
              'ossBucketName' => 'bucket001',
              // ID unik 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("Permintaan gagal. 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());
      }
    • Dapatkan contoh kode untuk 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationResultRequest();
      // Layanan moderasi: videoDetection untuk moderasi file video dan liveStreamDetection untuk moderasi aliran video 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("Permintaan gagal. 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("Gagal mengkueri 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());
      }
    • Kode contoh untuk membatalkan tugas moderasi aliran video langsung

      <?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 Kunci Akses dari akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan melakukan hard-code pada ID AccessKey dan rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan Kunci Akses dapat bocor dan keamanan semua sumber daya Anda dapat terancam.
           * Metode umum untuk mendapatkan 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" => 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.',
          "accessKeySecret" => 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
          // Atur proksi HTTP.
          // "httpProxy" => "http://10.10.xx.xx:xxxx",
          // Atur proksi HTTPS.
          // "httpsProxy" => "https://10.10.xx.xx:xxxx",
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // Catatan: Kami menyarankan Anda menggunakan kembali klien yang dibuat instance-nya untuk menghindari pembuatan koneksi berulang kali dan meningkatkan performa moderasi.
      $client = new Green($config);
      
      $request = new VideoModerationCancelRequest();
      // Layanan moderasi: videoDetection untuk moderasi file video dan liveStreamDetection untuk moderasi streaming langsung.
      $request->service = "liveStreamDetection_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. Kode:" . $body->code);
          }
        } else {
          print_r("Permintaan gagal. Kode:" . $response->statusCode);
        }
      } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
      }

SDK untuk Go

Tiga jenis moderasi video berikut didukung.

Moderasi video yang dapat diakses melalui internet publik

Skenario

Jika video yang ingin Anda moderasi dapat diakses melalui internet, Video Moderation 2.0 dapat mengambil file tersebut menggunakan URL lalu melakukan moderasi.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2
  2. Integrasikan dengan SDK untuk Go.

    • Kode contoh untuk mengirim 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() {
          // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          client, _err := green20220302.NewClient(config)
          if _err != nil {
              panic(_err)
          }
      
          // Buat instance RuntimeObject dan konfigurasikan parameter runtime.
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "url": "https://xxx.oss.aliyuncs.com/xxx.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("Permintaan gagal. Status:%d\n", *result.StatusCode)
              return
          }
          body := result.Body
          fmt.Printf("Permintaan berhasil. RequestId:%s, Code:%d, Message:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code != http.StatusOK {
              fmt.Printf("Moderasi video gagal. Code:%d\n", *body.Code)
              return
          }
          
          data := body.Data
          fmt.Printf("Video moderation taskId:%s\n", *data.TaskId)
      }
    • Ambil hasil tugas deteksi 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() {
      	// Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeObject dan konfigurasikan 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, Message:%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 mengkueri hasil moderasi video. Code:%d\n", *body.Code)
      		return
      	}
      
      	data := body.Data
          fmt.Printf("Video moderation result:%s\n", data)
      	fmt.Printf("Video moderation audio result:%s\n", data.AudioResult)
      	fmt.Printf("Video moderation frame result:%s\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"
      )
      
      func main() {
      	// Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
          // Buat instance RuntimeObject dan konfigurasikan 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("liveStreamDetection_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, Message:%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)
          }
      }

Mendeteksi video lokal

Skenario

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

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2

    Instal SDK OSS:

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

    • Kode contoh untuk mengirim 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
      //Buat 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
          return green20220302.NewClient(config);
      }
      
      //Buat klien 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);
          }
      }
      
      //Unggah file.
      func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) {
          createOssClient(tokenData)
          objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1]
              //Unggah 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
          client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
          if _err != nil {
              return nil,_err
          }
          //Atur parameter runtime. Pengaturan ini hanya berlaku untuk permintaan yang menggunakan instance RuntimeOptions ini.
          runtime := &util.RuntimeOptions{}
          //Jalur lengkap file lokal. Contoh: D:\localPath\exampleFile.mp4.
          var filePath = "D:\\localPath\\exampleFile.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])
      
          //Konstruksi 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
           * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
           * 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")
           */
          var accessKeyId= "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.";
          var accessKeySecret= "Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.";
          //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
          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
          }
          //Perutean otomatis. Alihkan wilayah ke China (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("response dataId:" + tea.StringValue(videoModerationResponseData.DataId))
                      for i := 0; i < len(result); i++ {
                          fmt.Println("response label:" + tea.StringValue(result[i].Label))
                          fmt.Println("response 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))
              }
          }
      }
    • Mengambil hasil tugas deteksi 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() {
      	// Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeObject dan konfigurasikan 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, Message:%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 mengkueri hasil moderasi video. Code:%d\n", *body.Code)
      		return
      	}
      
      	data := body.Data
          fmt.Printf("Video moderation result:%s\n", data)
      	fmt.Printf("Video moderation audio result:%s\n", data.AudioResult)
      	fmt.Printf("Video moderation frame result:%s\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"
      )
      
      func main() {
      	// Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
          // Buat instance RuntimeObject dan konfigurasikan 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("liveStreamDetection_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, Message:%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 di OSS

Skenario

Jika file video yang ingin Anda moderasi sudah disimpan di Object Storage Service (OSS), Anda dapat membuat peran layanan untuk memberikan izin Content Moderation mengakses OSS. Video Moderation 2.0 dapat mengambil file dari OSS melalui peran layanan lalu melakukan moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2
  2. Integrasikan dengan SDK untuk Go.

    • Kode contoh untuk mengirim 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() {
          // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          client, _err := green20220302.NewClient(config)
          if _err != nil {
              panic(_err)
          }
      
          // Buat instance RuntimeObject dan konfigurasikan parameter runtime.
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "ossBucketName": "bucket_01",
                  "ossObjectName": "conect/xxx.mp4",
                  "ossRegionId": "ap-southeast-1",
              },
          )
          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("Permintaan gagal. Status:%d\n", *result.StatusCode)
              return
          }
          body := result.Body
          fmt.Printf("Permintaan berhasil. RequestId:%s, Code:%d, Message:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code != http.StatusOK {
              fmt.Printf("Moderasi video gagal. Code:%d\n", *body.Code)
              return
          }
          
          data := body.Data
          fmt.Printf("Video moderation taskId:%s\n", *data.TaskId)
      }
    • Ambil hasil tugas deteksi 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() {
      	// Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
      	// Buat instance RuntimeObject dan konfigurasikan 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, Message:%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 mengkueri hasil moderasi video. Code:%d\n", *body.Code)
      		return
      	}
      
      	data := body.Data
          fmt.Printf("Video moderation result:%s\n", data)
      	fmt.Printf("Video moderation audio result:%s\n", data.AudioResult)
      	fmt.Printf("Video moderation frame result:%s\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"
      )
      
      func main() {
      	// Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
          config := &openapi.Config{
              /**
               * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
               * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
               * 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("Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan."),
              AccessKeySecret: tea.String("Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan."),
              // 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 pemrosesan end-to-end di sisi server adalah 10 detik. Konfigurasikan periode timeout sesuai.
      		 * Jika periode ReadTimeout yang Anda atur kurang dari waktu pemrosesan di sisi server, pengecualian ReadTimeout akan dikembalikan.
      		 */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
      	client, _err := green20220302.NewClient(config)
      	if _err != nil {
      		panic(_err)
      	}
      
          // Buat instance RuntimeObject dan konfigurasikan 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("liveStreamDetection_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, Message:%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)
          }
      }

SDK untuk C#

Untuk kode sumber, lihat Kode sumber SDK untuk C#.

Tiga jenis moderasi video berikut didukung.

Moderasi video yang dapat diakses melalui internet publik

Skenario

Jika video yang ingin Anda moderasi dapat diakses melalui internet, Video Moderation 2.0 dapat mengambil file tersebut menggunakan URL lalu melakukan moderasi.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10
  2. Integrasikan dengan SDK untuk C#.

    • Kode contoh untuk mengirim tugas moderasi video

      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien menggunakan 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)
              {
                  // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
                  /**
                  * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  * Metode umum untuk mendapatkan 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 = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.",
                  string accessKeySecret = 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Konstruksi permintaan moderasi.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest();
                  // Layanan moderasi.
                  videoModerationRequest.Service="videoDetection_global";
                  Dictionary<String,Object> task=new Dictionary<string, object>();
                  // URL video yang akan dimoderasi. URL harus dapat diakses melalui internet publik.
                  task.Add("url","https://xxxx/xxx/sample.mp4");
                  videoModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                  // Buat instance RuntimeObject dan konfigurasikan 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)
                  {
                      // Cetak error 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 error jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
              }
          }
      }
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien menggunakan 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)
              {
                  // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
                  /**
                  * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  * Metode umum untuk mendapatkan 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 = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.",
                  string accessKeySecret = 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Konstruksi 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 hasilnya ingin Anda kueri.
                  task.Add("taskId","<The ID of the task whose results you want to query>");
                  videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                  // Buat instance RuntimeObject dan konfigurasikan 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.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)
                  {
                      // Cetak error 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 error jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
              }
          }
      }

Deteksi video lokal

Skenario

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

  1. Jalankan perintah berikut untuk menambahkan dependensi.

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

    Instal SDK OSS:

    Install using NuGet 
    1. Jika NuGet belum diinstal untuk 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 dan temukan Aliyun.OSS.SDK (untuk .NET Framework) atau Aliyun.OSS.SDK.NetCore di hasil pencarian.
  2. Integrasikan dengan SDK untuk C#.

    • Kode contoh untuk mengirim 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 akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  * Metode umum untuk mendapatkan 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 = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.";
                  String accessKeySecret = "Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.";
                  // Modifikasi wilayah dan titik akhir sesuai kebutuhan.
                  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));
              }
      
              //Buat klien permintaan.
              public static Client createClient(
                  String accessKeyId,
                  String accessKeySecret,
                  String endpoint
              )
              {
                  AlibabaCloud.OpenApiClient.Models.Config config =
                      new AlibabaCloud.OpenApiClient.Models.Config
                      {
                          AccessKeyId = accessKeyId,
                          AccessKeySecret = accessKeySecret,
                          //Atur proxy HTTP.
                          //HttpProxy = "http://10.10.xx.xx:xxxx",
                          //Atur proxy HTTPS.
                          //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999",
                          //Titik akhir layanan.
                          Endpoint = endpoint,
                      };
                  return new Client(config);
              }
      
              //Buat klien 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
                      );
                  }
              }
      
              //Unggah 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;
              }
      
              //Kirim permintaan moderasi.
              public static Models.VideoModerationResponse invoke(
                  String accessKeyId,
                  String accessKeySecret,
                  String endpoint
              )
              {
                  //Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
                  Client client = createClient(accessKeyId, accessKeySecret, endpoint);
      
                  //Atur parameter runtime. Pengaturan ini 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]);
                      //Konstruksi permintaan moderasi.
                      Models.VideoModerationRequest videoModerationRequest =
                          new Models.VideoModerationRequest();
                      //contoh layanan: videoDetection_global
                        videoModerationRequest.Service = "videoDetection_global";
                      Dictionary<string, object> task = new Dictionary<string, object>();
                      //Informasi file yang akan dimoderasi.
                      task.Add("ossBucketName", tokenDic[endpoint].Body.Data.BucketName);
                      task.Add("ossObjectName", objectName);
                      //ID data yang akan dimoderasi.
                      task.Add("dataId", Guid.NewGuid().ToString());
                      videoModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task);
                      //Panggil operasi API untuk mendapatkan hasil moderasi.
                      Models.VideoModerationResponse response = client.VideoModerationWithOptions(
                          videoModerationRequest,
                          runtimeOptions
                      );
                      return response;
                  }
                  catch (Exception _err)
                  {
                      Console.WriteLine(_err);
                      return null;
                  }
              }
          }
      }
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien menggunakan 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)
              {
                  // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
                  /**
                  * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  * Metode umum untuk mendapatkan 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 = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.",
                  string accessKeySecret = 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Konstruksi 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 hasilnya ingin Anda kueri.
                  task.Add("taskId","<The ID of the task whose results you want to query>");
                  videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                  // Buat instance RuntimeObject dan konfigurasikan 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.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 error 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 error jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
              }
          }
      }

Moderasi video di OSS

Skenario

Jika file video yang ingin Anda moderasi sudah disimpan di Object Storage Service (OSS), Anda dapat membuat peran layanan untuk memberikan izin Content Moderation mengakses OSS. Video Moderation 2.0 dapat mengambil file dari OSS melalui peran layanan lalu melakukan moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10
  2. Integrasikan dengan SDK untuk C#.

    • Kode contoh untuk mengirim tugas moderasi video

      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien menggunakan 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)
              {
                  // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
                  /**
                  * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  * Metode umum untuk mendapatkan 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 = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.",
                  string accessKeySecret = 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Konstruksi permintaan moderasi.
                  AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest();
                  // Layanan moderasi.
                  videoModerationRequest.Service="videoDetection_global";
                  Dictionary<String,Object> task=new Dictionary<string, object>();
                  // Parameter file OSS contoh.
                  task.Add("ossBucketName","bucket_01");
                  task.Add("ossObjectName","test/sample.wav");
                  task.Add("ossRegionId","ap-southeast-1");
                  videoModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                  // Buat instance RuntimeObject dan konfigurasikan 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)
                  {
                      // Cetak error 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 error jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
              }
          }
      }
    • Kode contoh untuk mengkueri hasil tugas moderasi video

      using Newtonsoft.Json;
      using Tea;
      
      namespace AlibabaCloud.SDK.Sample
      {
          public class Sample
          {
      
              /**
               * Inisialisasi klien menggunakan 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)
              {
                  // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang mengompromikan keamanan semua sumber daya Anda. Kode contoh berikut hanya untuk referensi. Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti Security Token Service (STS), untuk memanggil operasi API.
                  /**
                  * Pasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
                  * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
                  * Metode umum untuk mendapatkan 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 = "Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.",
                  string accessKeySecret = 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.',
                  // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
                  AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                  // Konstruksi 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 hasilnya ingin Anda kueri.
                  task.Add("taskId","<The ID of the task whose results you want to query>");
                  videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                  // Buat instance RuntimeObject dan konfigurasikan 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.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)
                  {
                      // Cetak error 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 error jika diperlukan.
                      AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                      Console.WriteLine("error : " + error);
                  }
              }
          }
      }

SDK untuk Node.js

Untuk kode sumber, lihat Kode sumber SDK untuk Node.js.

Tiga jenis moderasi video berikut didukung.

Moderasi video yang dapat diakses melalui internet publik

Skenario

Jika video yang ingin Anda moderasi dapat diakses melalui internet, Video Moderation 2.0 dapat mengambil file tersebut menggunakan URL lalu melakukan moderasi.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    npm install @alicloud/green20220302@2.2.10

  2. Integrasikan dengan SDK untuk Node.js.

    • Kode contoh untuk mengirim tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang 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.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                  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();
              // Buat objek permintaan.
              const videoModerationRequest = new Green20220302.VideoModerationRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  // URL video yang akan dimoderasi.
                  "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"})
              });
              // Buat objek konfigurasi 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) {
                  // Kami menyarankan agar Anda menangani pengecualian dengan hati-hati dalam kode bisnis Anda dan jangan mengabaikannya. Dalam contoh ini, hanya pesan error yang dicetak.
                  // Pesan error.
                  console.log('Error occurred:', 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang 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.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                  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();
              // Buat objek permintaan.
              const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({"taskId":"<The ID of the video moderation task whose result you want to query>"})
              });
              // Buat objek konfigurasi 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) {
                  // Kami menyarankan agar Anda menangani pengecualian dengan hati-hati dalam kode bisnis Anda dan jangan mengabaikannya. Dalam contoh ini, hanya pesan error yang dicetak.
                  // Pesan error.
                  console.log('Error occurred:', error.message);
              }
          }
      }
      
      Client.main();

Mendeteksi video lokal

Skenario

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

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    npm install @alicloud/green20220302@2.2.10

  2. Integrasikan dengan SDK untuk Node.js.

    • Kode contoh untuk mengirim 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 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 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
          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 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));
      
          //Gunakan kode berikut untuk membuat permintaan API dan mengonfigurasi parameter.
          var params = {
              //Contoh layanan moderasi video: videoDetection_global
              "Service": "videoDetection_global",
              //Informasi video lokal yang diunggah.
              "ServiceParameters": JSON.stringify({
                  "ossBucketName": tokenDic[endpoint].BucketName,
                  "ossObjectName": objectName
              })
          }
          //Panggil operasi 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 menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
          * Jangan hard-code ID AccessKey dan rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya Anda terancam.
          * 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: 'Dapatkan ID AccessKey pengguna RAM Anda dari variabel lingkungan.'
          const accessKeySecret: 'Dapatkan rahasia AccessKey pengguna RAM Anda dari variabel lingkungan.'
          //Modifikasi wilayah dan titik akhir sesuai kebutuhan.
          var endpoint = "https://green-cip.ap-southeast-1.aliyuncs.com"
      
          try {
              var response;
              //Panggil operasi 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang 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.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                  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();
              // Buat objek permintaan.
              const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({"taskId":"<The ID of the video moderation task whose result you want to query>"})
              });
              // Buat objek konfigurasi 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) {
                  // Kami menyarankan agar Anda menangani pengecualian dengan hati-hati dalam kode bisnis Anda dan jangan mengabaikannya. Dalam contoh ini, hanya pesan error yang dicetak.
                  // Pesan error.
                  console.log('Error occurred:', error.message);
              }
          }
      }
      
      Client.main();

Moderasi video di OSS

Skenario

Jika file video yang ingin Anda moderasi sudah disimpan di Object Storage Service (OSS), Anda dapat membuat peran layanan untuk memberikan izin Content Moderation mengakses OSS. Video Moderation 2.0 dapat mengambil file dari OSS melalui peran layanan lalu melakukan moderasi. Buka halaman Otorisasi Akses Sumber Daya Cloud untuk membuat peran layanan.

  1. Jalankan perintah berikut untuk menambahkan dependensi.

    npm install @alicloud/green20220302@2.2.10

  2. Integrasikan dengan SDK untuk Node.js.

    • Kode contoh untuk mengirim tugas moderasi video

      const Green20220302 = require('@alicloud/green20220302');
      const OpenApi = require('@alicloud/openapi-client');
      const Util = require('@alicloud/tea-util');
      // Catatan: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang 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.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                  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();
              // Buat objek permintaan.
              const videoModerationRequest = new Green20220302.VideoModerationRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  // URL video yang akan dimoderasi.
                  "serviceParameters": JSON.stringify({
                  // Wilayah tempat bucket berada. Contoh: cn-shanghai
                  "ossRegionId": "cn-shanghai",
                  // Nama bucket. Contoh: bucket001
                  "ossBucketName": "bucket001",
                  // File yang akan dimoderasi. Contoh: video/001.mp4
                  "ossObjectName": "video/001.mp4",})
              });
              // Buat objek konfigurasi 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) {
                  // Kami menyarankan agar Anda menangani pengecualian dengan hati-hati dalam kode bisnis Anda dan jangan mengabaikannya. Dalam contoh ini, hanya pesan error yang dicetak.
                  // Pesan error.
                  console.log('Error occurred:', 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: Kami menyarankan agar Anda menggunakan kembali klien yang diinstansiasi untuk menghindari pembentukan koneksi berulang dan meningkatkan kinerja moderasi.
      // Jika kode proyek bocor, pasangan AccessKey mungkin diungkapkan, yang 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.
                  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                  // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                  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();
              // Buat objek permintaan.
              const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                  // Layanan moderasi video.
                  "service": "videoDetection_global",
                  "serviceParameters": JSON.stringify({"taskId":"<The ID of the video moderation task whose result you want to query>"})
              });
              // Buat objek konfigurasi 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) {
                  // Kami menyarankan agar Anda menangani pengecualian dengan hati-hati dalam kode bisnis Anda dan jangan mengabaikannya. Dalam contoh ini, hanya pesan error yang dicetak.
                  // Pesan error.
                  console.log('Error occurred:', error.message);
              }
          }
      }
      
      Client.main();

Pemanggilan HTTPS native

  • Call method

    URL permintaan layanan: https://green-cip.{region}.aliyuncs.com

    Protokol: HTTPS

    Metode: POST

  • Common request parameters

    Operasi API Video Moderation 2.0 memerlukan parameter permintaan umum dan parameter operasi spesifik. Parameter permintaan umum, yang wajib untuk setiap operasi API, dijelaskan dalam tabel berikut.

    Nama

    Tipe

    Wajib

    Deskripsi

    Format

    String

    Ya

    Format respons. Nilai yang valid:

    • JSON (default)

    • XML

    Version

    String

    Ya

    Nomor versi API. Gunakan format YYYY-MM-DD. Versi saat ini adalah 2022-03-02.

    AccessKeyId

    String

    Ya

    ID AccessKey yang disediakan oleh Alibaba Cloud bagi Anda untuk mengakses layanannya.

    Signature

    String

    Ya

    String signature permintaan. Untuk informasi tentang cara menghitung signature, lihat bagian metode Signature di bawah ini.

    SignatureMethod

    String

    Ya

    Metode signature. HMAC-SHA1 didukung.

    Timestamp

    String

    Ya

    Timestamp permintaan. Format tanggal harus mengikuti standar ISO 8601 dan dalam Coordinated Universal Time (UTC).

    Formatnya adalah yyyy-MM-ddTHH:mm:ssZ.

    Sebagai 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 yang digunakan untuk mencegah serangan replay. Gunakan bilangan acak yang berbeda untuk setiap permintaan.

    Action

    String

    Ya

    Nilai yang valid:

    • VideoModeration

    • VideoModerationResult

  • Common response parameters

    Untuk setiap permintaan API yang Anda kirim, sistem mengembalikan RequestId unik, terlepas dari apakah pemanggilan berhasil atau tidak. Parameter respons lainnya bervariasi berdasarkan layanan yang Anda panggil.

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

    Respons contoh berikut diformat agar mudah dibaca. Respons aktual tidak diformat dengan line break atau indentasi.

    • Kode contoh untuk 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 sukses contoh

      {
          "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2",
          "Message":"SUCCESS",
          "Data":{
              "TaskId":"vi_f_O5xxxxxxxxxxxxxxqa-1x****"
          },
          "Code":200
      }
    • Kode contoh untuk tugas kueri

      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 sukses 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": "Suspected fireworks-related content",
                          "LabelSum": 8
                      },
                      {
                          "Label": "sexual_cleavage",
                          "Description": "Suspected content with nudity or sexual undertones",
                          "LabelSum": 8
                      }
                  ],
                  "RiskLevel": "medium",
                  "Frames": [
                      {
                          "Offset": 1,
                          "RiskLevel": "none",
                          "Results": [
                              {
                                  "Result": [
                                      {
                                          "Label": "nonLabel",
                                          "Description": "No risks detected"
                                      }
                                  ],
                                  "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": "Suspected fireworks-related content"
                                      }
                                  ],
                                  "Service": "baselineCheck"
                              },
                              {
                                  "Result": [
                                      {
                                          "Confidence": 1,
                                          "Label": "sexual_cleavage",
                                          "Description": "Suspected content with nudity or sexual undertones"
                                      }
                                  ],
                                  "Service": "baselineCheck_pro"
                              }
                          ],
                          "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test2.jpg"
                      }
                  ]
              }
          }
      }
  • Signature method

    Layanan Voice Moderation-Enhanced mengautentikasi setiap permintaan. Oleh karena itu, Anda harus menyertakan signature dalam setiap permintaan. Layanan menggunakan enkripsi simetris dengan ID AccessKey dan rahasia AccessKey untuk memverifikasi identitas pengirim permintaan.

    Pasangan AccessKey dikeluarkan oleh Alibaba Cloud. Anda dapat mengajukan dan mengelolanya di situs web Alibaba Cloud. Pasangan AccessKey terdiri dari ID AccessKey dan rahasia AccessKey. ID AccessKey digunakan untuk memverifikasi identitas pengguna, sedangkan rahasia AccessKey digunakan untuk mengenkripsi dan memverifikasi string signature. Anda harus menjaga kerahasiaan rahasia AccessKey Anda.

    Untuk menandatangani permintaan, lakukan langkah-langkah berikut:

    1. Buat string kueri yang dinormalisasi.

      1. Urutkan semua parameter permintaan secara alfabetis berdasarkan nama parameter. Parameter ini mencakup parameter permintaan umum dan parameter spesifik operasi, tetapi tidak termasuk parameter Signature itu sendiri.

      2. Encode nama dan nilai parameter permintaan. Gunakan set karakter UTF-8 untuk encoding URL.

        Catatan

        Sebagian besar library yang mendukung encoding URL, seperti java.net.URLEncoder di Java, mengikuti aturan encoding MIME application/x-www-form-urlencoded. Anda dapat langsung menggunakan metode encoding ini. Ganti tanda plus (+) dengan %20, tanda bintang (*) dengan %2A, dan %7E dengan tilde (~). Ini memberi Anda string yang diencode yang mengikuti aturan di atas.

        Aturan encoding URL adalah sebagai berikut:

        • Jangan encode huruf kapital, huruf kecil, angka, dan karakter khusus seperti tanda hubung (-), garis bawah (_), titik (.), dan tilde (~).

        • Encode karakter lain dalam format %XY, di mana XY merepresentasikan nilai heksadesimal kode ASCII karakter tersebut. Sebagai contoh, tanda kutip ganda (") diencode sebagai %22.

        • Encode karakter UTF-8 yang diperluas dalam format %XY%ZA….

        • Spasi harus diencode sebagai %20, bukan tanda plus (+).

      3. Hubungkan nama dan nilai parameter yang diencode dengan tanda sama dengan (=).

      4. Urutkan string yang dihasilkan berdasarkan nama parameter secara alfabetis dan hubungkan dengan tanda ampersand (&) untuk membuat string kueri yang dinormalisasi.

    2. Gunakan string yang dinormalisasi dari langkah a.i untuk membuat string untuk perhitungan signature sesuai aturan berikut:

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

      HTTPMethod adalah metode HTTP yang digunakan untuk permintaan, seperti POST. percentEncode("/") adalah nilai yang diencode dari garis miring (/), yaitu %2F, sesuai aturan encoding URL di langkah 1.b. percentEncode(CanonicalizedQueryString) adalah string yang diencode dari string kueri yang dinormalisasi dari langkah 1.a, juga mengikuti aturan di langkah 1.b.

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

      Catatan

      Kunci untuk perhitungan HMAC adalah rahasia AccessKey Anda dengan tanda ampersand (&) (ASCII: 38) ditambahkan. Algoritma hash yang digunakan adalah SHA1.

    4. Encode nilai HMAC dalam Base64 untuk membuat string signature (Signature).

    5. Tambahkan nilai signature sebagai parameter Signature ke permintaan untuk menyelesaikan proses penandatanganan.

      Catatan

      Saat Anda mengirimkan nilai signature sebagai parameter permintaan akhir ke server Content Moderation, nilai tersebut harus diencode URL seperti parameter lainnya, sesuai aturan dalam RFC 3986.