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
Masuk ke Konsol RAM sebagai administrator RAM.
- Buat pengguna RAM.
Untuk informasi selengkapnya, lihat Membuat pengguna RAM.
- Berikan kebijakan sistem
AliyunYundunGreenWebFullAccesskepada 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 |
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.
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>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.
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>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.
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>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.
Anda dapat menjalankan perintah berikut untuk menginstal pip.
pip install alibabacloud_green20220302==2.2.11Integrasikan 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.
Jalankan perintah berikut untuk menginstal pip.
pip install alibabacloud_green20220302==2.2.11Instal SDK OSS:
pip install oss2Integrasikan 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.
Jalankan perintah berikut untuk menginstal pip.
pip install alibabacloud_green20220302==2.2.11Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
composer require alibabacloud/green-20220302 2.2.10Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
composer require alibabacloud/green-20220302 2.2.10Instal SDK OSS:
composer require aliyuncs/oss-sdk-phpIntegrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
composer require alibabacloud/green-20220302 2.2.10Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2Instal SDK OSS:
go get github.com/aliyun/aliyun-oss-go-sdk/ossIntegrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10Instal 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.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.
Jalankan perintah berikut untuk menambahkan dependensi.
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
npm install @alicloud/green20220302@2.2.10Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
npm install @alicloud/green20220302@2.2.10Integrasikan 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.
Jalankan perintah berikut untuk menambahkan dependensi.
npm install @alicloud/green20220302@2.2.10Integrasikan 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:
Buat string kueri yang dinormalisasi.
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.
Encode nama dan nilai parameter permintaan. Gunakan set karakter UTF-8 untuk encoding URL.
CatatanSebagian 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 (+).
Hubungkan nama dan nilai parameter yang diencode dengan tanda sama dengan (=).
Urutkan string yang dihasilkan berdasarkan nama parameter secara alfabetis dan hubungkan dengan tanda ampersand (&) untuk membuat string kueri yang dinormalisasi.
Gunakan string yang dinormalisasi dari langkah a.i untuk membuat string untuk perhitungan signature sesuai aturan berikut:
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)CatatanHTTPMethod 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.Hitung nilai HMAC dari string yang akan ditandatangani sebagaimana didefinisikan dalam RFC 2104.
CatatanKunci untuk perhitungan HMAC adalah rahasia AccessKey Anda dengan tanda ampersand (
&) (ASCII: 38) ditambahkan. Algoritma hash yang digunakan adalah SHA1.Encode nilai HMAC dalam Base64 untuk membuat string signature (Signature).
Tambahkan nilai signature sebagai parameter Signature ke permintaan untuk menyelesaikan proses penandatanganan.
CatatanSaat 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.