Todos os produtos
Search
Central de documentação

AI Guardrails:Video Moderation 2.0 SDK and integration

Última atualização: Jul 09, 2026

O Video Moderation 2.0 oferece suporte à integração por meio de SDKs ou requisições HTTPS nativas. Recomendamos o uso de um SDK, pois ele gerencia automaticamente detalhes como verificação de assinatura e formatação de requisições. Este tópico descreve como integrar o Video Moderation 2.0.

Etapa 1: Ativar o serviço

Acesse a página Activate Content Moderation 2.0 service para ativar o serviço Content Moderation 2.0. Após integrar e utilizar a API, a cobrança ocorre automaticamente com base no seu uso. Para mais informações, consulte faturamento.

Após ativar o serviço Content Moderation 2.0, o método de faturamento padrão é pagamento conforme o uso. As taxas são liquidadas diariamente com base no uso real. Se você não chamar o serviço, nenhuma cobrança será aplicada.

Etapa 2: Conceder permissões a um usuário RAM

Antes de usar o SDK ou a API, conceda as permissões necessárias a um usuário RAM. Também é preciso criar um par de AccessKey para esse usuário, a fim de autenticar suas chamadas à API da Alibaba Cloud. Para mais informações, consulte Obter um par de AccessKey.

Conceder permissões a um usuário RAM

  1. Faça login no RAM console usando sua conta Alibaba Cloud.

  2. Crie um usuário RAM. Para obter detalhes, consulte Criar um usuário RAM.

  3. Atribua a política de sistema AliyunYundunGreenWebFullAccess ao usuário RAM. Essa política concede acesso total ao Content Moderation. Para obter detalhes, consulte Gerenciar permissões de usuário RAM.

    O usuário RAM agora pode chamar a API do Content Moderation.

Etapa 3: Integrar a moderação de vídeo

O serviço de moderação de vídeo está disponível nas seguintes regiões:

Região

Endpoint público

Endpoint interno

Serviços suportados

Ásia-Pacífico SE 1 (Singapura)

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

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

videoDetection_global, videoDetectionByVL_global, liveStreamDetection_global, liveStreamDetectionByVL_global

Leste dos EUA 1 (Virgínia)

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

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

videoDetection_global, liveStreamDetection_global

Oeste dos EUA 1 (Vale do Silício)

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

Não disponível

Europa Central 1 (Frankfurt)

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

Não disponível

Nota

Para obter códigos de exemplo do SDK em outras linguagens, utilize a ferramenta de depuração online no Portal do Desenvolvedor OpenAPI para depurar operações de API. A ferramenta gera automaticamente o código de exemplo do SDK. As seguintes operações de API estão disponíveis para depuração online:

Os SDKs da Alibaba Cloud criam credenciais padrão ao ler as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Ao chamar uma operação de API, o programa lê seu AccessKey dessas variáveis e conclui a autenticação automaticamente. Antes de usar o código de exemplo do SDK, configure as variáveis de ambiente. Para mais informações, consulte Configurar credenciais de autenticação.

Para detalhes sobre os campos da API, consulte API de Moderação de Arquivos de Vídeo 2.0 e API de Moderação de Transmissão ao Vivo 2.0.

Instruções

  1. Leia o conteúdo em inglês para compreender O QUE precisa ser comunicado

  2. Escreva o português brasileiro DO ZERO — esqueça a estrutura das frases em inglês

  3. Preserve toda a formatação markdown, blocos de código, links e imagens exatamente como estão

  4. Tags xref (<a data-tag="xref" ...>texto</a>) — preserve a tag INTEIRA com todos os atributos na ordem e caixa originais, traduza APENAS o texto visível entre > e

  5. Aplique todas as regras específicas do idioma rigorosamente

  6. Aplique as regras de stopwords com tolerância zero

  7. Use o modo imperativo em etapas numeradas e listas de procedimentos

  8. Garanta a consistência terminológica — o mesmo termo deve ter a mesma tradução em todo o documento

  9. Varie os inícios de frase em listas e tabelas — nenhum início deve se repetir mais de 3 vezes

  10. Retorne APENAS o documento markdown em português brasileiro, sem explicações

    Instruções

    1. Leia o conteúdo em inglês para compreender O QUE precisa ser comunicado

    2. Escreva o texto em português do Brasil DO ZERO — esqueça a estrutura das frases em inglês

    3. Preserve toda a formatação markdown, blocos de código, links e imagens exatamente como estão

    4. Tags xref (<a data-tag="xref" ...>texto</a>) — preserve A TAG INTEIRA com todos os atributos na ordem e caixa originais, traduza APENAS o texto visível entre > e

    5. Aplique todas as regras específicas do idioma rigorosamente

    6. Aplique as regras de stopwords com tolerância zero

    7. Use o modo imperativo em passos numerados e listas de procedimentos

    8. Garanta a consistência terminológica — o mesmo termo deve ter a mesma tradução em todo o documento

    9. Varie os inícios de frase em listas e tabelas — nenhum início deve se repetir 3 ou mais vezes

    10. Retorne APENAS o documento markdown em português do Brasil, sem explicações

    Java SDK

    Este recurso requer Java 1.8 ou superior.

    Para acessar o source code, consulte Source code do Java SDK ou Source code do Java SDK (caminho OSS).

    Este serviço oferece suporte a três tipos de detecção de vídeo.

    Instruções

    Moderação de vídeos públicos

    Cenários

    O serviço Video Moderation 2.0 busca e modera vídeos acessíveis por uma URL pública.

    1. Adicione a seguinte dependência ao arquivo pom.xml para usar o SDK no seu projeto Maven.

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

      • Envio de tarefa de detecção de vídeo

        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();
               /**
                 * An AccessKey pair from an Alibaba Cloud account grants full API access. For security, we recommend using a RAM user for API calls and daily O&M.
                 * Common methods to obtain credentials from environment variables:
                 * Method 1:
                 *     Get the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Get the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Get the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Get the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
                config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
                // Configure your region and endpoint.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // Read timeout in milliseconds.
                config.setReadTimeout(6000);
                // Connection timeout in milliseconds.
                config.setConnectTimeout(3000);
                // Set the HTTP proxy.
                //config.setHttpProxy("http://10.10.xx.xx:xxxx");
                // Set the HTTPS proxy.
                //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();
                // Specify the service type. For regions outside the Chinese mainland, use "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("Video moderation failed. Code: " + code);
                        }
                    } else {
                        System.out.println("Request failed. Status: " + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
      • Recuperação dos resultados da tarefa de detecção de vídeo

        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();
                /**
                 * An AccessKey pair from an Alibaba Cloud account grants full API access. For security, we recommend using a RAM user for API calls and daily O&M.
                 * Common methods to obtain credentials from environment variables:
                 * Method 1:
                 *     Get the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Get the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Get the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Get the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
                config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
                // Configure your region and endpoint.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // Read timeout in milliseconds.
                config.setReadTimeout(6000);
                // Connection timeout in milliseconds.
                config.setConnectTimeout(3000);
                // Set the HTTP proxy.
                //config.setHttpProxy("http://10.10.xx.xx:xxxx");
                // Set the HTTPS proxy.
                //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
                Client client = new Client(config);
        
                JSONObject serviceParameters = new JSONObject();
                // Specify the taskId returned from the submission request.
                serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
        
                VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
                // Specify the service type. For regions outside the Chinese mainland, use "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("Failed to retrieve video moderation results. Code: " + result.getCode());
                        }
                    } else {
                        System.out.println("Request failed. Status: " + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
      • Cancelamento de tarefa de detecção de vídeo

        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();
                /**
                 * An AccessKey pair from an Alibaba Cloud account grants full API access. For security, we recommend using a RAM user for API calls and daily O&M.
                 * Common methods to obtain credentials from environment variables:
                 * Method 1:
                 *     Get the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Get the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Get the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Get the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
                config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
                // Configure your region and endpoint.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // Read timeout in milliseconds.
                config.setReadTimeout(6000);
                // Connection timeout in milliseconds.
                config.setConnectTimeout(3000);
                // Set the HTTP proxy.
                //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
                // Set the HTTPS proxy.
                //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
                Client client = new Client(config);
        
                JSONObject serviceParameters = new JSONObject();
                // Specify the taskId of the task to cancel.
                serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
        
                VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
                
                videoModerationCancelRequest.setService("videoDetection_global");
                videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());
        
                try {
                    VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest);
                    if (response.getStatusCode() == 200) {
                        VideoModerationCancelResponseBody result = response.getBody();
                        System.out.println("requestId=" + result.getRequestId());
                        System.out.println("code=" + result.getCode());
                        System.out.println("msg=" + result.getMessage());
                        if (200 != result.getCode()) {
                            System.out.println("Failed to cancel video moderation task. Code: " + result.getCode());
                        }
                    } else {
                        System.out.println("Request failed. Status: " + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    Moderação de vídeo local

    Casos de uso

    Para moderar um vídeo armazenado na sua máquina local que não possui uma URL pública, faça o upload dele para um bucket do OSS fornecido pelo Content Moderation. Assim, o serviço de moderação de vídeo V2.0 acessa diretamente o OSS para recuperar e analisar o conteúdo.

    1. Adicione a seguinte dependência ao arquivo pom.xml para utilizar o SDK em um projeto Maven.

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

      Instale o SDK do OSS:

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

      • Código de exemplo para envio de uma tarefa de moderação de vídeo

        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 {
        
            // Specifies whether the service is deployed in a VPC.
            public static boolean isVPC = false;
        
            // A map of endpoints to file upload tokens.
            public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();
        
            // The client for file upload requests.
            public static OSS ossClient = null;
        
            /**
             * Creates a client for sending requests.
             *
             * @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);
                // Change the region and endpoint based on your actual requirements.
                config.setEndpoint(endpoint);
                return new Client(config);
            }
        
            /**
             * Creates a client for file upload requests.
             *
             * @param tokenData
             * @param isVPC
             */
            public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
                // Note: To improve moderation performance, reuse the instantiated client to avoid repeatedly establishing connections.
                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());
                }
            }
        
            /**
             * Uploads a 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 {
                // Note: To improve moderation performance, reuse the instantiated client to avoid repeatedly establishing connections.
                Client client = createClient(accessKeyId, accessKeySecret, endpoint);
                RuntimeOptions runtime = new RuntimeOptions();
        
                // The full path to the local file, for example, D:\\localPath\\exampleFile.mp4.
                String filePath = "D:\\localPath\\exampleFile.mp4";
                // Obtain the file upload token.
                if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) {
                    DescribeUploadTokenResponse tokenResponse = client.describeUploadToken();
                    tokenMap.put(endpoint, tokenResponse.getBody().getData());
                }
                // The client for file upload requests.
                getOssClient(tokenMap.get(endpoint), isVPC);
        
                // Upload the file.
                String objectName = uploadFile(filePath, tokenMap.get(endpoint));
        
                // Construct the moderation parameters.
                Map<String, String> serviceParameters = new HashMap<>();
                // File upload information.
                serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName());
                serviceParameters.put("ossObjectName", objectName);
                serviceParameters.put("dataId", UUID.randomUUID().toString());
        
                VideoModerationRequest request = new VideoModerationRequest();
                // The moderation service. Set the value to 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 {
                /**
                 * An AccessKey pair for an Alibaba Cloud account has permissions for all API operations. We recommend that you use a RAM user for API access and daily O&M.
                 * Common methods for obtaining environment variables:
                 * Method 1:
                 *     Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                String accessKeyId = "We recommend that you obtain the AccessKey ID of your RAM user from environment variables.";
                String accessKeySecret = "We recommend that you obtain the AccessKey secret of your RAM user from environment variables.";
                // Change the region and endpoint based on your actual requirements.
                VideoModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com");
                try {
                    // Print the moderation result.
                    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("video moderation not success. code:" + code);
                            }
                        } else {
                            System.out.println("response not success. status:" + response.getStatusCode());
                        }
                    }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } }
      • Código de exemplo para obtenção do resultado de uma tarefa de moderação de vídeo

        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();
                /**
                 * An AccessKey pair for an Alibaba Cloud account has permissions for all API operations. We recommend that you use a RAM user for API access and daily O&M.
                 * Common methods for obtaining environment variables:
                 * Method 1:
                 *     Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from environment variables.");
                config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from environment variables.");
                // Change the region and endpoint based on your actual requirements.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // The read timeout in milliseconds (ms).
                config.setReadTimeout(6000);
                // The connection timeout in milliseconds (ms).
                config.setConnectTimeout(3000);
                // Sets the HTTP proxy.
                //config.setHttpProxy("http://10.10.xx.xx:xxxx");
                // Sets the HTTPS proxy.
                //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
                Client client = new Client(config);
        
                JSONObject serviceParameters = new JSONObject();
                // The ID of the task returned upon submission.
                serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
        
                VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
                // The moderation service. Set the value to 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("video moderation result not success. code:" + result.getCode());
                        }
                    } else {
                        System.out.println("response not success. status:" + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
      • Código de exemplo para cancelamento de uma tarefa de moderação de vídeo

        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();
                /**
                 * An AccessKey pair for an Alibaba Cloud account has permissions for all API operations. We recommend that you use a RAM user for API access and daily O&M.
                 * Common methods for obtaining environment variables:
                 * Method 1:
                 *     Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("We recommend that you obtain the AccessKey ID of your RAM user from environment variables.");
                config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of your RAM user from environment variables.");
                // Change the region and endpoint based on your actual requirements.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // The read timeout in milliseconds (ms).
                config.setReadTimeout(6000);
                // The connection timeout in milliseconds (ms).
                config.setConnectTimeout(3000);
                // Sets the HTTP proxy.
                //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
                // Sets the HTTPS proxy.
                //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
                Client client = new Client(config);
        
                JSONObject serviceParameters = new JSONObject();
                // The ID of the task returned upon submission.
                serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
        
                VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
                
                videoModerationCancelRequest.setService("videoDetection_global");
                videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());
        
                try {
                    VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest);
                    if (response.getStatusCode() == 200) {
                        VideoModerationCancelResponseBody result = response.getBody();
                        System.out.println("requestId=" + result.getRequestId());
                        System.out.println("code=" + result.getCode());
                        System.out.println("msg=" + result.getMessage());
                        if (200 != result.getCode()) {
                            System.out.println("video moderation cancel not success. code:" + result.getCode());
                        }
                    } else {
                        System.out.println("response not success. status:" + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    Moderação de vídeos no OSS

    Casos de uso

    Para moderar arquivos de vídeo já armazenados no OSS, crie uma função de serviço que conceda ao serviço Content Moderation acesso aos arquivos. O serviço Video Moderation 2.0 utiliza essa função para recuperar e moderar os arquivos. Acesse a página Cloud Resource Access Authorization para criar a função de serviço.

    1. Adicione a seguinte dependência ao arquivo pom.xml do seu projeto para utilizar o SDK.

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

      • Envie uma tarefa de moderação de vídeo

        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();
               /**
                 * An AccessKey pair for an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user for API calls or routine O&M.
                 * Common methods to obtain environment variables:
                 * Method 1:
                 *     Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("We recommend that you obtain the AccessKey ID of a RAM user from environment variables.");
                config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of a RAM user from environment variables.");
                // Modify the region and endpoint based on your actual deployment.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // Connection timeout in milliseconds (ms).
                config.setReadTimeout(6000);
                // Read timeout in milliseconds (ms).
                config.setConnectTimeout(3000);
                // Set the HTTP proxy.
                //config.setHttpProxy("http://10.10.xx.xx:xxxx");
                // Set the HTTPS proxy.
                //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();
                // Specify the moderation service. Set the value to 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("video moderation failed. code:" + code);
                        }
                    } else {
                        System.out.println("request failed. status:" + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
      • Recupere os resultados da moderação

        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();
                /**
                 * An AccessKey pair for an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user for API calls or routine O&M.
                 * Common methods to obtain environment variables:
                 * Method 1:
                 *     Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("We recommend that you obtain the AccessKey ID of a RAM user from environment variables.");
                config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of a RAM user from environment variables.");
                // Modify the region and endpoint based on your actual deployment.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // Connection timeout in milliseconds (ms).
                config.setReadTimeout(6000);
                // Read timeout in milliseconds (ms).
                config.setConnectTimeout(3000);
                // Set the HTTP proxy.
                //config.setHttpProxy("http://10.10.xx.xx:xxxx");
                // Set the HTTPS proxy.
                //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
                Client client = new Client(config);
        
                JSONObject serviceParameters = new JSONObject();
                // The ID of the task to query. This ID is returned when you submit a moderation task.
                serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
        
                VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest();
                // The moderation service that you want to use. Set the value to 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("getting video moderation result failed. code:" + result.getCode());
                        }
                    } else {
                        System.out.println("request failed. status:" + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
      • Cancele uma tarefa de moderação de vídeo

        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();
                /**
                 * An AccessKey pair for an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user for API calls or routine O&M.
                 * Common methods to obtain environment variables:
                 * Method 1:
                 *     Obtain the AccessKey ID of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 * Method 2:
                 *     Obtain the AccessKey ID of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
                 *     Obtain the AccessKey secret of the RAM user: System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                 */
                config.setAccessKeyId("We recommend that you obtain the AccessKey ID of a RAM user from environment variables.");
                config.setAccessKeySecret("We recommend that you obtain the AccessKey secret of a RAM user from environment variables.");
                // Modify the region and endpoint based on your actual deployment.
                config.setRegionId("ap-southeast-1");
                config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
                // Connection timeout in milliseconds (ms).
                config.setReadTimeout(6000);
                // Read timeout in milliseconds (ms).
                config.setConnectTimeout(3000);
                // Set the HTTP proxy.
                //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
                // Set the HTTPS proxy.
                //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
                Client client = new Client(config);
        
                JSONObject serviceParameters = new JSONObject();
                // The ID of the task to cancel. This ID is returned when you submit a moderation task.
                serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****");
        
                VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest();
                
                videoModerationCancelRequest.setService("videoDetection_global");
                videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString());
        
                try {
                    VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest);
                    if (response.getStatusCode() == 200) {
                        VideoModerationCancelResponseBody result = response.getBody();
                        System.out.println("requestId=" + result.getRequestId());
                        System.out.println("code=" + result.getCode());
                        System.out.println("msg=" + result.getMessage());
                        if (200 != result.getCode()) {
                            System.out.println("video moderation cancellation failed. code:" + result.getCode());
                        }
                    } else {
                        System.out.println("request failed. status:" + response.getStatusCode());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    Python SDK

    É necessário ter o Python 3.6 ou superior instalado.

    Para acessar o source code, consulte Source code do SDK para Python.

    Este serviço oferece suporte aos três tipos de moderação de vídeo descritos a seguir.

    Vídeos acessíveis publicamente

    Casos de uso

    Caso o vídeo que você deseja moderar esteja disponível por meio de uma URL pública, o serviço de moderação de vídeo 2.0 busca o arquivo e realiza a moderação automaticamente.

    1. Execute o comando abaixo para instalar o pacote:

      pip install alibabacloud_green20220302==3.2.4
    2. Integre o SDK para Python.

      • Exemplo de código para enviar uma tarefa de moderação de vídeo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
                    # We recommend that you use a RAM user for API access and routine O&M.
                    # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
                    # Store your credentials in environment variables, as shown in this example.
                    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                    # Connection timeout in milliseconds.
                    connect_timeout=3000,
                    # Read timeout in milliseconds.
                    read_timeout=6000,
                    # The service region and endpoint. Specify them based on your business requirements.
                    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(
            # The moderation service. Set the value to 'videoDetection_global'.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation(videoModerationRequest)
            if response.status_code == 200:
                # The API call is successful.
                # Obtain the moderation result.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)
      • Obtenha os resultados da moderação de vídeo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
                    # We recommend that you use a RAM user for API access and routine O&M.
                    # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
                    # Store your credentials in environment variables, as shown in this example.
                    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                    # Connection timeout in milliseconds.
                    connect_timeout=3000,
                    # Read timeout in milliseconds.
                    read_timeout=6000,
                    # The service region and endpoint. Specify them based on your business requirements.
                    region_id='ap-southeast-1',
                    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        # The ID of the video moderation task, returned upon submission.
        serviceParameters = {
            "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
        }
        videoModerationResultRequest = models.VideoModerationResultRequest(
            # The moderation service. Set the value to 'videoDetection_global'.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation_result(videoModerationResultRequest)
            if response.status_code == 200:
                # The API call is successful.
                # Obtain the moderation result.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)
      • Exemplo de código para cancelar uma tarefa de moderação de transmissão de vídeo ao vivo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
            # We recommend that you use a RAM user for API access and routine O&M.
            # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
            # Store your credentials in environment variables, as shown in this example.
            access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            # Connection timeout in milliseconds.
            connect_timeout=10000,
            # Read timeout in milliseconds.
            read_timeout=3000,
            region_id='ap-southeast-1',
            endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        # The ID of the task returned upon submission.
        serviceParameters = {
            "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
        }
        videoModerationCancelRequest = models.VideoModerationCancelRequest(
            # The moderation service.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation_cancel(videoModerationCancelRequest)
            if response.status_code == 200:
                # The API call is successful.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)

    Vídeos locais

    Casos de uso

    Se o vídeo a ser moderado estiver na sua máquina local e não possuir uma URL pública, faça o upload dele para um bucket do Object Storage Service (OSS) fornecido pelo Content Moderation. Dessa forma, o serviço de Moderação de Vídeo 2.0 acessa diretamente o OSS para recuperar e moderar o conteúdo.

    1. Execute o comando abaixo para instalar o pacote:

      pip install alibabacloud_green20220302==3.2.4

      Instale o SDK do OSS:

      pip install oss2
    2. Integre o SDK para Python.

      • Exemplo de código para enviar uma tarefa de moderação de vídeo

        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        from alibabacloud_tea_util.client import Client as UtilClient
        from alibabacloud_tea_util import models as util_models
        import json
        import uuid
        
        import oss2
        import time
        
        config = Config(
            # We recommend that you use a RAM user for API access and routine O&M.
            # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
            # Store your credentials in environment variables, as shown in this example.
            access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            # Connection timeout in milliseconds.
            connect_timeout=10000,
            # Read timeout in milliseconds.
            read_timeout=10000,
            # The service region and endpoint. Specify them based on your business requirements.
            region_id='ap-southeast-1',
            endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        # For better performance, reuse the client instance to avoid creating new connections for each request.
        client = Client(config)
        
        bucket = None
        upload_token = None
        
        def get_oss_client(is_vpc):
            global upload_token
            global bucket
            if (upload_token is None) or int(upload_token.expiration) <= int(time.time()):
                response = client.describe_upload_token()
        
                upload_token = response.body.data
                auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token)
        
                end_point = upload_token.oss_internet_end_point
                if is_vpc:
                    end_point = upload_token.oss_internal_end_point
                bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name)
        
        def upload_file(file_name, is_vpc):
            get_oss_client(is_vpc)
            object_name = upload_token.file_name_prefix + str(uuid.uuid4()) + '.' + file_name.split('.')[-1]
            bucket.put_object_from_file(object_name, file_name)
            return object_name
        
        def video_moderation_by_local_file(file_path, is_vpc):
            # 1. Upload the file.
            object_name = upload_file(file_path, is_vpc)
        
            # 2. Submit the video for moderation.
            service_parameters = {
                'dataId': str(uuid.uuid4()),
                'ossBucketName': upload_token.bucket_name,
                'ossObjectName': object_name
            }
        
            video_moderation_request = models.VideoModerationRequest(
                # The moderation service. Set the value to 'videoDetection_global'.
                service='videoDetection_global',
                service_parameters=json.dumps(service_parameters)
            )
        
            # Create a RuntimeOptions instance and configure its parameters.
            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:
                    # The API call is successful.
                    # Obtain the moderation result.
                    result = response.body
                    print('response success. result:{}'.format(result))
                    if result.code == 200:
                        result_data = result.data
                        print('result: {}'.format(result_data))
                else:
                    print('response not success. status:{} ,result:{}'.format(response.status_code, response))
            except Exception as err:
                print(err)
        
        if __name__ == '__main__':
            # The path to the local file.
            file_path = '/path/to/your/video.mp4'
            # Indicates if the service is deployed in a virtual private cloud (VPC).
            is_vpc = False  # True
            video_moderation_by_local_file(file_path, is_vpc)
            
      • Obtenha os resultados da moderação de vídeo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
                    # We recommend that you use a RAM user for API access and routine O&M.
                    # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
                    # Store your credentials in environment variables, as shown in this example.
                    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                    # Connection timeout in milliseconds.
                    connect_timeout=3000,
                    # Read timeout in milliseconds.
                    read_timeout=6000,
                    # The service region and endpoint. Specify them based on your business requirements.
                    region_id='ap-southeast-1',
                    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        # The ID of the video moderation task, returned upon submission.
        serviceParameters = {
            "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
        }
        videoModerationResultRequest = models.VideoModerationResultRequest(
            # The moderation service. Set the value to 'videoDetection_global'.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation_result(videoModerationResultRequest)
            if response.status_code == 200:
                # The API call is successful.
                # Obtain the moderation result.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)
      • Exemplo de código para cancelar uma tarefa de moderação de transmissão de vídeo ao vivo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
            # We recommend that you use a RAM user for API access and routine O&M.
            # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
            # Store your credentials in environment variables, as shown in this example.
            access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            # Connection timeout in milliseconds.
            connect_timeout=10000,
            # Read timeout in milliseconds.
            read_timeout=3000,
            region_id='ap-southeast-1',
            endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        # The ID of the task returned upon submission.
        serviceParameters = {
            "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
        }
        videoModerationCancelRequest = models.VideoModerationCancelRequest(
            # The moderation service.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation_cancel(videoModerationCancelRequest)
            if response.status_code == 200:
                # The API call is successful.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)

    Vídeos no OSS

    Casos de uso

    Quando o vídeo a ser moderado já estiver armazenado no Object Storage Service (OSS), crie uma função de serviço que conceda ao Content Moderation acesso aos seus recursos do OSS. Em seguida, o serviço de moderação de vídeo 2.0 utiliza essa função para recuperar e moderar o arquivo. Para criar a função, acesse a página de Autorização de Acesso a Recursos em Nuvem.

    1. Execute o comando abaixo para instalar o pacote:

      pip install alibabacloud_green20220302==3.2.4
    2. Integre o SDK para Python.

      • Exemplo de código para enviar uma tarefa de moderação de vídeo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
                    # We recommend that you use a RAM user for API access and routine O&M.
                    # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
                    # Store your credentials in environment variables, as shown in this example.
                    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                    # Connection timeout in milliseconds.
                    connect_timeout=3000,
                    # Read timeout in milliseconds.
                    read_timeout=6000,
                    # The service region and endpoint. Specify them based on your business requirements.
                    region_id='ap-southeast-1',
                    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        serviceParameters = {
            'ossBucketName': 'your-bucket-name',
            'ossObjectName': 'path/to/your/video.flv',
            'ossRegionId': 'ap-southeast-1'
        }
        videoModerationRequest = models.VideoModerationRequest(
            # The moderation service. Set the value to 'videoDetection_global'.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation(videoModerationRequest)
            if response.status_code == 200:
                # The API call is successful.
                # Obtain the moderation result.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)
      • Obtenha os resultados da moderação de vídeo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
                    # We recommend that you use a RAM user for API access and routine O&M.
                    # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
                    # Store your credentials in environment variables, as shown in this example.
                    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
                    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
                    # Connection timeout in milliseconds.
                    connect_timeout=3000,
                    # Read timeout in milliseconds.
                    read_timeout=6000,
                    # The service region and endpoint. Specify them based on your business requirements.
                    region_id='ap-southeast-1',
                    endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        # The ID of the video moderation task, returned upon submission.
        serviceParameters = {
            "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****'
        }
        videoModerationResultRequest = models.VideoModerationResultRequest(
            # The moderation service. Set the value to 'videoDetection_global'.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation_result(videoModerationResultRequest)
            if response.status_code == 200:
                # The API call is successful.
                # Obtain the moderation result.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)
      • Exemplo de código para cancelar uma tarefa de moderação de transmissão de vídeo ao vivo

        # -*- encoding: utf-8 -*-
        # Python 3.6 or later is required.
        import os
        from alibabacloud_green20220302.client import Client
        from alibabacloud_green20220302 import models
        from alibabacloud_tea_openapi.models import Config
        import json
        
        config = Config(
            # We recommend that you use a RAM user for API access and routine O&M.
            # For security, do not hardcode your AccessKey ID and AccessKey Secret. This practice can lead to leaks, compromising the security of all resources in your account.
            # Store your credentials in environment variables, as shown in this example.
            access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            # Connection timeout in milliseconds.
            connect_timeout=10000,
            # Read timeout in milliseconds.
            read_timeout=3000,
            region_id='ap-southeast-1',
            endpoint='green-cip.ap-southeast-1.aliyuncs.com'
        )
        
        clt = Client(config)
        
        # The ID of the task returned upon submission.
        serviceParameters = {
            "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****'
        }
        videoModerationCancelRequest = models.VideoModerationCancelRequest(
            # The moderation service.
            service='videoDetection_global',
            service_parameters=json.dumps(serviceParameters)
        )
        
        try:
            response = clt.video_moderation_cancel(videoModerationCancelRequest)
            if response.status_code == 200:
                # The API call is successful.
                result = response.body
                print('response success. result:{}'.format(result))
            else:
                print('response not success. status:{} ,result:{}'.format(response.status_code, response))
        except Exception as err:
            print(err)

    PHP SDK

    Requer PHP 5.6 ou superior.

    Para acessar o source code, consulte o source code do PHP SDK.

    Há suporte para os três tipos de detecção de vídeo a seguir.

    Moderar vídeos públicos

    Cenários

    O serviço de moderação de vídeo 2.0 busca e modera qualquer vídeo acessível por uma URL pública.

    1. Execute o comando a seguir para instalar a dependência.

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

      • Envie uma tarefa de moderação de vídeo

        <?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([
            /**
             * An AccessKey pair of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily O&M.
             * We strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your project code. This may compromise the security of all resources in your account.
             * We recommend that you retrieve the credentials from environment variables. Examples:
             * Obtain the AccessKey ID of a RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Obtain the AccessKey Secret of a RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => 'We recommend that you obtain the AccessKey ID of your RAM user from environment variables.',
            "accessKeySecret" => 'We recommend that you obtain the AccessKey Secret of your RAM user from environment variables.',
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: To improve detection performance, reuse the client instance to avoid repeatedly establishing connections.
        $client = new Green($config);
        
        $request = new VideoModerationRequest();
        // Detection type: `videoDetection_global` for video file detection, and `liveStreamDetection_global` for live stream detection.
        $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("Response not successful. 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("Video moderation not successful. 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());
        }
      • Recupere o resultado de uma tarefa de moderação de vídeo

        <?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([
            /**
             * An AccessKey pair of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily O&M.
             * We strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your project code. This may compromise the security of all resources in your account.
             * We recommend that you retrieve the credentials from environment variables. Examples:
             * Obtain the AccessKey ID of a RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Obtain the AccessKey Secret of a RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => 'We recommend that you obtain the AccessKey ID of your RAM user from environment variables.',
            "accessKeySecret" => 'We recommend that you obtain the AccessKey Secret of your RAM user from environment variables.',
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: To improve detection performance, reuse the client instance to avoid repeatedly establishing connections.
        $client = new Green($config);
        
        $request = new VideoModerationResultRequest();
        // Detection type: `videoDetection_global` for video file detection, and `liveStreamDetection_global` for live stream detection.
        $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("Response not successful. 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("The video moderation task is being processed. Code:" . $body->code);
                return;
            }
            if (200 != $body->code) {
                print_r("The video moderation result was not retrieved. 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());
        }
      • Cancele uma tarefa de moderação de vídeo

        <?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([
            /**
             * An AccessKey pair of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily O&M.
             * We strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your project code. This may compromise the security of all resources in your account.
             * We recommend that you retrieve the credentials from environment variables. Examples:
             * Obtain the AccessKey ID of a RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Obtain the AccessKey Secret of a RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => 'We recommend that you obtain the AccessKey ID of your RAM user from environment variables.',
            "accessKeySecret" => 'We recommend that you obtain the AccessKey Secret of your RAM user from environment variables.',
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: To improve detection performance, reuse the client instance to avoid repeatedly establishing connections.
        $client = new Green($config);
        
        $request = new VideoModerationCancelRequest();
        // Detection type: `videoDetection_global` for video file detection, and `liveStreamDetection_global` for live stream detection.
        $request->service = "videoDetection_global";
        $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****');
        
        $request->serviceParameters = json_encode($serviceParameters);
        
        $runtime = new RuntimeOptions();
        $runtime->readTimeout = 6000;
        $runtime->connectTimeout = 3000;
        
        try {
          $response = $client->videoModerationCancel($request, $runtime);
          print_r($response->body);
          if (200 == $response->statusCode) {
            $body = $response->body;
            print_r("requestId = " . $body->requestId);
            print_r("code = " . $body->code);
            print_r("message = " . $body->message);
            if (200 != $body->code) {
              print_r("The video moderation task was not canceled. Code:" . $body->code);
            }
          } else {
            print_r("Response not successful. Code:" . $response->statusCode);
          }
        } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
        }

    Moderar vídeos locais

    Casos de uso

    Para moderar um vídeo local sem URL pública, faça o upload dele em um bucket do OSS fornecido pelo Content Moderation. Em seguida, o serviço de moderação de vídeo 2.0 acessa diretamente o OSS para realizar a moderação.

    1. Execute os comandos a seguir para instalar as dependências necessárias.

      composer require alibabacloud/green-20220302 3.2.4

      Instale o OSS SDK:

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

      • Envie uma tarefa de moderação de vídeo

        <?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;
        
        // Specifies whether the service is deployed in a VPC.
        $isVPC = false;
        // The file upload token.
        $tokenArray = array();
        // The client for file upload requests.
        $ossClient = null;
        
        /**
         * Creates a request client.
         * @param $accessKeyId
         * @param $accessKeySecret
         * @param $endpoint
         * @return Green
         */
        function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
        {
            $config = new Config([
                "accessKeyId" => $accessKeyId,
                "accessKeySecret" => $accessKeySecret,
                // Set an HTTP proxy.
                // "httpProxy" => "http://10.10.xx.xx:xxxx",
                // Set an HTTPS proxy.
                // "httpsProxy" => "https://10.10.xx.xx:xxxx",
                "endpoint" => $endpoint,
            ]);
            return new Green($config);
        }
        
        /**
         * Creates a file upload client.
         * @param $tokenData
         * @return void
         */
        function create_upload_client($tokenData): void
        {
        
            global $isVPC;
            global $ossClient;
            // Note: For better performance, reuse the client to avoid repeated connections.
            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);
            }
        }
        
        /**
         * Uploads a file.
         * @param $filePath
         * @param $tokenData
         * @return string
         * @throws \OSS\Core\OssException
         */
        function upload_file($filePath, $tokenData): string
        {
            global $ossClient;
            // Initializes the 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();
            }
            // Uploads the file.
            $ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath);
            return $objectName;
        }
        
        /**
         * Submits a moderation task.
         * @param $accessKeyId
         * @param $accessKeySecret
         * @param $endpoint
         * @return VideoModerationResponse
         * @throws \OSS\Core\OssException
         */
        function invoke($accessKeyId, $accessKeySecret, $endpoint): VideoModerationResponse
        {
            global $tokenArray;
            // Note: For better performance, reuse the client to avoid repeated connections.
            $client = create_client($accessKeyId, $accessKeySecret, $endpoint);
            // Sets runtime parameters.
            $runtime = new RuntimeOptions([]);
            // The full path of the local file, for example, D:\\localPath\\exampleFile.mp4.
            $filePath = "D:\\test\\video\\b652.mp4";
        
            // Get the file upload token.
            if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) {
                $token = $client->describeUploadToken();
                $tokenArray[$endpoint] = $token->body->data;
            }
        
            // Uploads the file.
            $objectName = upload_file($filePath, $tokenArray[$endpoint]);
        
            // Set the moderation parameters.
            $request = new VideoModerationRequest();
            // Example: videoDetection_global
              $request->service = "videoDetection_global";
            // The OSS information for the file to be moderated.
            $serviceParameters = array(
                'ossObjectName' => $objectName,
                'ossBucketName' => $tokenArray[$endpoint]->bucketName,
                'dataId' => uniqid());
            $request->serviceParameters = json_encode($serviceParameters);
            // Submit the moderation task.
            return $client->videoModerationWithOptions($request, $runtime);
        }
        
        /**
         * An AccessKey pair for an Alibaba Cloud account has full permissions on all APIs. For better security, we recommend using a RAM user for API access and daily operations.
         * Do not hard-code your AccessKey ID and AccessKey Secret in your code. This can lead to credential leakage and compromise the security of all your resources.
         * We recommend obtaining your credentials from environment variables.
         * Obtain the AccessKey ID of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         * Obtain the AccessKey secret of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        $accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        $accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Modify the region and endpoint as required.
        $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());
        }
      • Recupere os resultados da moderação de vídeo

        <?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([
            /**
             * An AccessKey pair for an Alibaba Cloud account has full permissions on all APIs. For better security, we recommend using a RAM user for API access and daily operations.
             * Do not hard-code your AccessKey ID and AccessKey Secret in your code. This can lead to credential leakage and compromise the security of all your resources.
             * We recommend obtaining your credentials from environment variables.
             * Obtain the AccessKey ID of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Obtain the AccessKey secret of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: For better performance, reuse the client to avoid repeated connections.
        $client = new Green($config);
        
        $request = new VideoModerationResultRequest();
        // Service type: `videoDetection` for video file moderation, `liveStreamDetection` for live stream moderation.
        $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("Response not successful. 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("The video moderation task is in progress. code:" . $body->code);
                return;
            }
            if (200 != $body->code) {
                print_r("Failed to retrieve the video moderation results. 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());
        }
      • Cancele uma tarefa de moderação de vídeo

        <?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([
            /**
             * An AccessKey pair for an Alibaba Cloud account has full permissions on all APIs. For better security, we recommend using a RAM user for API access and daily operations.
             * Do not hard-code your AccessKey ID and AccessKey Secret in your code. This can lead to credential leakage and compromise the security of all your resources.
             * We recommend obtaining your credentials from environment variables.
             * Obtain the AccessKey ID of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Obtain the AccessKey secret of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: For better performance, reuse the client to avoid repeated connections.
        $client = new Green($config);
        
        $request = new VideoModerationCancelRequest();
        // Service type: `videoDetection` for video file moderation, `liveStreamDetection` for live stream moderation.
        $request->service = "videoDetection_global";
        $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****');
        
        $request->serviceParameters = json_encode($serviceParameters);
        
        $runtime = new RuntimeOptions();
        $runtime->readTimeout = 6000;
        $runtime->connectTimeout = 3000;
        
        try {
          $response = $client->videoModerationCancel($request, $runtime);
          print_r($response->body);
          if (200 == $response->statusCode) {
            $body = $response->body;
            print_r("requestId = " . $body->requestId);
            print_r("code = " . $body->code);
            print_r("message = " . $body->message);
            if (200 != $body->code) {
              print_r("Failed to cancel the video moderation task. code:" . $body->code);
            }
          } else {
            print_r("Response not successful. code:" . $response->statusCode);
          }
        } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
        }

    Detecção de vídeo no OSS

    Caso de uso

    Se o arquivo de vídeo que você precisa moderar já estiver armazenado no OSS, autorize o serviço Content Moderation a acessar o OSS criando uma função de serviço. O serviço de Moderação de Vídeo 2.0 utiliza essa função para recuperar e moderar o arquivo diretamente do OSS. Acesse a página de Autorização de Acesso a Recursos na Nuvem para criar a função de serviço.

    1. Execute o comando a seguir para instalar as dependências necessárias.

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

      • Código de exemplo para enviar uma tarefa de detecção de vídeo

        <?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([
            /**
             * An AccessKey pair for an Alibaba Cloud account grants access to all APIs. We recommend using a RAM user for API access and daily O&M.
             * For security reasons, we strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your code.
             * Hard-coding credentials can lead to leakage and compromise the security of all resources in your account.
             * We recommend retrieving credentials from environment variables:
             * Get the AccessKey ID of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Get the AccessKey Secret of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => 'We recommend that you retrieve the RAM user AccessKey ID from an environment variable',
            "accessKeySecret" => 'We recommend that you retrieve the RAM user AccessKey Secret from an environment variable',
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: Reuse the client whenever possible to avoid reconnecting and to improve detection performance.
        $client = new Green($config);
        
        $request = new VideoModerationRequest();
        // Detection type: `videoDetection_global` for video file detection, `liveStreamDetection_global` for live stream detection.
        $request->service = "videoDetection_global";
        $serviceParameters = array(
                  // The file to be detected. Example: video/001.mp4
                'ossObjectName' => 'video/001.mp4',
                // The region of the bucket where the file is stored. Example: ap-southeast-1
                'ossRegionId' => 'ap-southeast-1',
                  // The name of the bucket where the file is stored. Example: bucket001
                'ossBucketName' => 'bucket001',
                // A unique identifier for the 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("Response not successful. 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("Video moderation failed. 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());
        }
      • Código de exemplo para consultar uma tarefa de detecção de vídeo

        <?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([
            /**
             * An AccessKey pair for an Alibaba Cloud account grants access to all APIs. We recommend using a RAM user for API access and daily O&M.
             * For security reasons, we strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your code.
             * Hard-coding credentials can lead to leakage and compromise the security of all resources in your account.
             * We recommend retrieving credentials from environment variables:
             * Get the AccessKey ID of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Get the AccessKey Secret of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => 'We recommend that you retrieve the RAM user AccessKey ID from an environment variable',
            "accessKeySecret" => 'We recommend that you retrieve the RAM user AccessKey Secret from an environment variable',
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: Reuse the client whenever possible to avoid reconnecting and to improve detection performance.
        $client = new Green($config);
        
        $request = new VideoModerationResultRequest();
        // Detection type: `videoDetection_global` for video file detection, `liveStreamDetection_global` for live stream detection.
        $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("Response not successful. 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("The video moderation task is being processed. code:" . $body->code);
                return;
            }
            if (200 != $body->code) {
                print_r("The video moderation result was not successfully retrieved. 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());
        }
      • Código de exemplo para cancelar uma tarefa de detecção de vídeo

        <?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([
            /**
             * An AccessKey pair for an Alibaba Cloud account grants access to all APIs. We recommend using a RAM user for API access and daily O&M.
             * For security reasons, we strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your code.
             * Hard-coding credentials can lead to leakage and compromise the security of all resources in your account.
             * We recommend retrieving credentials from environment variables:
             * Get the AccessKey ID of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             * Get the AccessKey Secret of the RAM user: getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            "accessKeyId" => 'We recommend that you retrieve the RAM user AccessKey ID from an environment variable',
            "accessKeySecret" => 'We recommend that you retrieve the RAM user AccessKey Secret from an environment variable',
            // Set an HTTP proxy.
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // Set an HTTPS proxy.
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
            "regionId" => "ap-southeast-1"
        
        ]);
        // Note: Reuse the client whenever possible to avoid reconnecting and to improve detection performance.
        $client = new Green($config);
        
        $request = new VideoModerationCancelRequest();
        // Detection type: `videoDetection_global` for video file detection, `liveStreamDetection_global` for live stream detection.
        $request->service = "videoDetection_global";
        $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****');
        
        $request->serviceParameters = json_encode($serviceParameters);
        
        $runtime = new RuntimeOptions();
        $runtime->readTimeout = 6000;
        $runtime->connectTimeout = 3000;
        
        try {
          $response = $client->videoModerationCancel($request, $runtime);
          print_r($response->body);
          if (200 == $response->statusCode) {
            $body = $response->body;
            print_r("requestId = " . $body->requestId);
            print_r("code = " . $body->code);
            print_r("message = " . $body->message);
            if (200 != $body->code) {
              print_r("The video moderation task was not successfully canceled. code:" . $body->code);
            }
          } else {
            print_r("Response not successful. code:" . $response->statusCode);
          }
        } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
        }

    Go SDK

    Este serviço oferece suporte a três tipos de detecção de vídeo.

    Moderar vídeos a partir de uma URL pública

    Cenários

    Se o vídeo que você deseja moderar estiver disponível em uma URL pública, o serviço de moderação de vídeo 2.0 poderá baixá-lo e moderá-lo automaticamente.

    1. Execute o comando a seguir para instalar a dependência necessária.

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

      • Envie uma tarefa de moderação de vídeo

        package main
        
        import (
        	"encoding/json"
        	"fmt"
        	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
        	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
        	util "github.com/alibabacloud-go/tea-utils/v2/service"
        	"github.com/alibabacloud-go/tea/tea"
        	"net/http"
        	"os"
        )
        
        func main() {
        	// For security reasons, we recommend that you do not hard-code your credentials in your code.
        	// Instead, load them from environment variables or use a more secure method like STS.
        	config := &openapi.Config{
        		// An AccessKey pair for an Alibaba Cloud account has permissions on all APIs.
        		// We recommend that you use a RAM user for API access or daily O&M.
        		// To secure your credentials, we recommend that you save them as environment variables.
        		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
        		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
        		// Set the HTTP proxy.
        		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        		// Set the HTTPS proxy.
        		// 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"),
        		/**
        		 * Set a timeout period. The server-side timeout for an end-to-end request is 10 seconds. Make sure that the settings are appropriate.
        		 * If the ReadTimeout that you set is shorter than the server's processing time, a ReadTimeout exception is thrown.
        		 */
        		ConnectTimeout: tea.Int(3000),
        		ReadTimeout:    tea.Int(6000),
        	}
        	client, _err := green20220302.NewClient(config)
        	if _err != nil {
        		panic(_err)
        	}
        
        	// Create a RuntimeObject instance and set runtime parameters.
        	runtime := &util.RuntimeOptions{}
        	runtime.ReadTimeout = tea.Int(10000)
        	runtime.ConnectTimeout = tea.Int(10000)
        
        	serviceParameters, _ := json.Marshal(
        		map[string]interface{}{
        			"url": "https://your-video-url.mp4",
        		},
        	)
        	request := green20220302.VideoModerationRequest{
        		Service:           tea.String("videoDetection_global"),
        		ServiceParameters: tea.String(string(serviceParameters)),
        	}
        
        	result, _err := client.VideoModerationWithOptions(&request, runtime)
        	if _err != nil {
        		panic(_err)
        	}
        
        	if *result.StatusCode != http.StatusOK {
        		fmt.Printf("response not success. status:%d\n", *result.StatusCode)
        		return
        	}
        	body := result.Body
        	fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
        	if *body.Code != http.StatusOK {
        		fmt.Printf("video moderation not success. code:%d\n", *body.Code)
        		return
        	}
        
        	data := body.Data
        	fmt.Printf("video moderation taskId:%s\n", *data.TaskId)
        }
      • Obtenha os resultados de uma tarefa de moderação de vídeo

        package main
        
        import (
        	"encoding/json"
        	"fmt"
        	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
        	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
        	util "github.com/alibabacloud-go/tea-utils/v2/service"
        	"github.com/alibabacloud-go/tea/tea"
        	"net/http"
        	"os"
        )
        
        func main() {
        	// For security reasons, we recommend that you do not hard-code your credentials in your code.
        	// Instead, load them from environment variables or use a more secure method like STS.
        	config := &openapi.Config{
        		// An AccessKey pair for an Alibaba Cloud account has permissions on all APIs.
        		// We recommend that you use a RAM user for API access or daily O&M.
        		// To secure your credentials, we recommend that you save them as environment variables.
        		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
        		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
        		// Set the HTTP proxy.
        		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        		// Set the HTTPS proxy.
        		// 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"),
        		/**
        		 * Set a timeout period. The server-side timeout for an end-to-end request is 10 seconds. Make sure that the settings are appropriate.
        		 * If the ReadTimeout that you set is shorter than the server's processing time, a ReadTimeout exception is thrown.
        		 */
        		ConnectTimeout: tea.Int(3000),
        		ReadTimeout:    tea.Int(6000),
        	}
        	client, _err := green20220302.NewClient(config)
        	if _err != nil {
        		panic(_err)
        	}
        
        	// Create a RuntimeObject instance and set runtime parameters.
        	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("response not success. status:%d\n", *result.StatusCode)
        		return
        	}
        	body := result.Body
        	fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
        	if *body.Code == 280 {
        		fmt.Printf("The video moderation task is being processed. code:%d\n", *body.Code)
        		return
        	}
        	if *body.Code != http.StatusOK {
        		fmt.Printf("Failed to get the video moderation result. code:%d\n", *body.Code)
        		return
        	}
        
        	data := body.Data
            fmt.Printf("Video moderation result: %+v\n", data)
        	fmt.Printf("Audio result: %+v\n", data.AudioResult)
        	fmt.Printf("Frame result: %+v\n", data.FrameResult)
        }
      • Cancele uma tarefa de moderação de transmissão ao vivo

        package main
        
        import (
        	"encoding/json"
        	"fmt"
        	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
        	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
        	util "github.com/alibabacloud-go/tea-utils/v2/service"
        	"github.com/alibabacloud-go/tea/tea"
        	"net/http"
        	"os"
        )
        
        func main() {
        	// For security reasons, we recommend that you do not hard-code your credentials in your code.
        	// Instead, load them from environment variables or use a more secure method like STS.
        	config := &openapi.Config{
        		// An AccessKey pair for an Alibaba Cloud account has permissions on all APIs.
        		// We recommend that you use a RAM user for API access or daily O&M.
        		// To secure your credentials, we recommend that you save them as environment variables.
        		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
        		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
        		// Set the HTTP proxy.
        		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        		// Set the HTTPS proxy.
        		// 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"),
        		/**
        		 * Set a timeout period. The server-side timeout for an end-to-end request is 10 seconds. Make sure that the settings are appropriate.
        		 * If the ReadTimeout that you set is shorter than the server's processing time, a ReadTimeout exception is thrown.
        		 */
        		ConnectTimeout: tea.Int(3000),
        		ReadTimeout:    tea.Int(6000),
        	}
        	client, _err := green20220302.NewClient(config)
        	if _err != nil {
        		panic(_err)
        	}
        
        	// Create a RuntimeObject instance and set runtime parameters.
        	runtime := &util.RuntimeOptions{}
        	runtime.ReadTimeout = tea.Int(10000)
        	runtime.ConnectTimeout = tea.Int(10000)
        
        	serviceParameters, _ := json.Marshal(
        		map[string]interface{}{
        			"taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****",
        		},
        	)
        	request := green20220302.VideoModerationCancelRequest{
        		Service:           tea.String("videoDetection_global"),
        		ServiceParameters: tea.String(string(serviceParameters)),
        	}
        
        	result, _err := client.VideoModerationCancelWithOptions(&request, runtime)
        	if _err != nil {
        		panic(_err)
        	}
        
        	if *result.StatusCode != http.StatusOK {
        		fmt.Printf("response not success. status:%d\n", *result.StatusCode)
        		return
        	}
        	body := result.Body
        	fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
        	if *body.Code != http.StatusOK {
        		fmt.Printf("Failed to cancel the video moderation task. code:%d\n", *body.Code)
        	}
        }

    Moderar vídeos locais

    Casos de uso

    Quando o vídeo a ser moderado está em uma máquina local e não possui uma URL pública, faça o upload dele para um bucket do Object Storage Service (OSS) fornecido pelo Content Moderation. O serviço de Moderação de Vídeo 2.0 acessa diretamente o OSS para recuperar o conteúdo e realizar a moderação.

    1. Execute o comando a seguir para instalar a dependência necessária.

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

      Instale o SDK do OSS:

      go get github.com/aliyun/aliyun-oss-go-sdk/oss
    2. Integre o SDK para Go.

      • Código de exemplo para envio de tarefa de moderação de vídeo

        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"
        )
        // The token for file upload.
        var TokenMap =make(map[string]*green20220302.DescribeUploadTokenResponseBodyData)
        // The client for file uploads.
        var Bucket *oss.Bucket
        // Specifies whether the service is deployed in a VPC.
        var isVPC = false
        // Creates a request client.
        func createClient(accessKeyId string, accessKeySecret string, endpoint string) (*green20220302.Client, error) {
            config := &openapi.Config{
                AccessKeyId: tea.String(accessKeyId),
                AccessKeySecret: tea.String(accessKeySecret),
                // Set the HTTP proxy.
                // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
                // Set the HTTPS proxy.
                // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
                Endpoint: tea.String(endpoint),
            }
            // Note: To improve performance, reuse the instantiated client to avoid repeatedly establishing connections.
            return green20220302.NewClient(config);
        }
        
        // Creates a client for file uploads.
        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));
            }
        }
        
        // Uploads a file.
        func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) {
            createOssClient(tokenData)
            objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1]
                // Uploads the 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) {
            // Note: To improve performance, reuse the instantiated client to avoid repeatedly establishing connections.
            client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
            if _err != nil {
                return nil,_err
            }
            // Set runtime options, which apply only to requests made with this runtime instance.
            runtime := &util.RuntimeOptions{}
            // The full path to the local file. Example: /path/to/your/video.mp4.
            var filePath = "/path/to/your/video.mp4"
            // Get a temporary token for file upload.
                tokenData,ok:=TokenMap[endpoint];
                if !ok || tea.Int32Value(tokenData.Expiration) <= int32(time.Now().Unix()) {
                    // Get a temporary token for file upload.
                    uploadTokenResponse, _err := client.DescribeUploadToken()
                    if _err != nil {
                        return nil,_err
                    }
                    tokenData = uploadTokenResponse.Body.Data
                    TokenMap[endpoint] = tokenData
                }
                 var objectName, _ = uploadFile(filePath,TokenMap[endpoint])
        
            // Build the moderation request.
                serviceParameters, _ := json.Marshal(
                    map[string]interface{}{
                        "ossBucketName": tea.StringValue(TokenMap[endpoint].BucketName),
                        "ossObjectName": objectName,
                        "dataId":   uuid.New().String(),
                    },
                )
                videoModerationRequest := &green20220302.VideoModerationRequest{
                    // Example: videoDetection_global
              Service:           tea.String("videoDetection_global"),
                    ServiceParameters: tea.String(string(serviceParameters)),
                }
        
            return client.VideoModerationWithOptions(videoModerationRequest, runtime)
        
        }
        
        func main() {
            // An AccessKey pair from an Alibaba Cloud account has permissions for all API operations. For better security, we recommend using a RAM user for API access and routine O&M.
            // Do not hardcode your AccessKey ID or AccessKey Secret. This practice can lead to credential leaks and compromise the security of your account resources.
            // Instead, store credentials in environment variables.
            // Obtain the AccessKey ID of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
            // Obtain the AccessKey secret of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            var accessKeyId= os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
            var accessKeySecret= os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            // Modify the region and endpoint based on your actual requirements.
            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
            }
            // Automatic failover. If the request fails, the region is switched to 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("Request successful. response:" + 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("Video moderation failed. status" + tea.ToString(body.Code))
                    }
                } else {
                    fmt.Print("Request failed. status:" + tea.ToString(statusCode))
                }
            }
        }
      • Recupere os resultados de uma tarefa de moderação de vídeo

        package main
        
        import (
        	"encoding/json"
        	"fmt"
        	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
        	green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
        	util "github.com/alibabacloud-go/tea-utils/v2/service"
        	"github.com/alibabacloud-go/tea/tea"
        	"net/http"
            "os"
        )
        
        func main() {
        	// For enhanced security, we recommend using a method such as STS and avoiding hardcoding your credentials.
            config := &openapi.Config{
                // An AccessKey pair from an Alibaba Cloud account has permissions for all API operations. For better security, we recommend using a RAM user for API access and routine O&M.
                // Do not hardcode your AccessKey ID or AccessKey Secret. This practice can lead to credential leaks and compromise the security of your account resources.
                // Instead, store credentials in environment variables.
                // Obtain the AccessKey ID of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
                // Obtain the AccessKey secret of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
                AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
                // Set the HTTP proxy.
                // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
                // Set the HTTPS proxy.
                // 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"),
                // The server-side timeout for this operation is 10 seconds. Ensure your client-side timeout is set appropriately.
        		// If your `ReadTimeout` is shorter than the server's processing time, a `ReadTimeout` exception will occur.
                ConnectTimeout: tea.Int(3000),
                ReadTimeout:    tea.Int(6000),
            }
        	client, _err := green20220302.NewClient(config)
        	if _err != nil {
        		panic(_err)
        	}
        
        	// Create a RuntimeOptions instance and set runtime parameters.
        	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("Request failed. status:%d\n", *result.StatusCode)
        		return
        	}
        	body := result.Body
        	fmt.Printf("Request successful. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
        	if *body.Code == 280 {
        		fmt.Printf("The video moderation task is being processed. code:%d\n", *body.Code)
        		return
        	}
        	if *body.Code != http.StatusOK {
        		fmt.Printf("Failed to get video moderation result. code:%d\n", *body.Code)
        		return
        	}
        
        	data := body.Data
            fmt.Printf("Video moderation result:%+v\n", data)
        	fmt.Printf("Video moderation audio result:%+v\n", data.AudioResult)
        	fmt.Printf("Video moderation frame result:%+v\n", data.FrameResult)
        }
      • Código de exemplo para cancelamento de tarefa de moderação de vídeo ao vivo

        package main
        
        import (
            "encoding/json"
            "fmt"
            openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
            green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
            util "github.com/alibabacloud-go/tea-utils/v2/service"
            "github.com/alibabacloud-go/tea/tea"
            "net/http"
            "os"
        )
        
        func main() {
        	// For enhanced security, we recommend using a method such as STS and avoiding hardcoding your credentials.
            config := &openapi.Config{
                // An AccessKey pair from an Alibaba Cloud account has permissions for all API operations. For better security, we recommend using a RAM user for API access and routine O&M.
                // Do not hardcode your AccessKey ID or AccessKey Secret. This practice can lead to credential leaks and compromise the security of your account resources.
                // Instead, store credentials in environment variables.
                // Obtain the AccessKey ID of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
                // Obtain the AccessKey secret of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
                AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
                // Set the HTTP proxy.
                // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
                // Set the HTTPS proxy.
                // 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"),
                // The server-side timeout for this operation is 10 seconds. Ensure your client-side timeout is set appropriately.
        		// If your `ReadTimeout` is shorter than the server's processing time, a `ReadTimeout` exception will occur.
                ConnectTimeout: tea.Int(3000),
                ReadTimeout:    tea.Int(6000),
            }
        	client, _err := green20220302.NewClient(config)
        	if _err != nil {
        		panic(_err)
        	}
        
            // Create a RuntimeOptions instance and set runtime parameters.
            runtime := &util.RuntimeOptions{}
            runtime.ReadTimeout = tea.Int(10000)
            runtime.ConnectTimeout = tea.Int(10000)
        
            serviceParameters, _ := json.Marshal(
                map[string]interface{}{
                    "taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****",
                },
            )
            request := green20220302.VideoModerationCancelRequest{
                Service:           tea.String("videoDetection_global"),
                ServiceParameters: tea.String(string(serviceParameters)),
            }
        
            result, _err := client.VideoModerationCancelWithOptions(&request, runtime)
            if _err != nil {
                panic(_err)
            }
        
            if *result.StatusCode != http.StatusOK {
                fmt.Printf("Request failed. status:%d\n", *result.StatusCode)
                return
            }
            body := result.Body
            fmt.Printf("Request successful. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
            if *body.Code != http.StatusOK {
                fmt.Printf("Failed to cancel video moderation task. code:%d\n", *body.Code)
            }
        }

    Moderar vídeos do OSS

    Cenários

    Se seus arquivos de vídeo para moderação estiverem armazenados no Object Storage Service (OSS) da Alibaba Cloud, crie uma função de serviço para conceder acesso ao Content Moderation aos seus recursos do OSS. O serviço de moderação de vídeo 2.0 utiliza essa função para recuperar arquivos do OSS e moderá-los. Acesse a página de Autorização de Acesso a Recursos na Nuvem para criar a função de serviço.

    1. Execute o comando a seguir para importar a dependência necessária.

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

      • Envie uma tarefa de moderação de vídeo

        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() {
            // Storing AccessKeys in your project code may lead to security risks. We recommend that you use a more secure method, such as STS, for authentication. The following code is for reference only.
            config := &openapi.Config{
                /**
                 * The AccessKey of an Alibaba Cloud account has permissions to all APIs. We recommend that you use a RAM user for API access and routine O&M.
                 * We strongly recommend that you do not hardcode your AccessKey ID and AccessKey Secret in your project code. This can expose your credentials and compromise all resources in your account.
                 * Common methods for obtaining environment variables:
                 * Obtain the AccessKey ID of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
                 * Obtain the AccessKey Secret of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                 */
                AccessKeyId: tea.String(""),
      • Recupere resultados de moderação de vídeo

        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() {
        	// Storing AccessKeys in your project code may lead to security risks. We recommend that you use a more secure method, such as STS, for authentication. The following code is for reference only.
            config := &openapi.Config{
                /**
                 * The AccessKey of an Alibaba Cloud account has permissions to all APIs. We recommend that you use a RAM user for API access and routine O&M.
                 * We strongly recommend that you do not hardcode your AccessKey ID and AccessKey Secret in your project code. This can expose your credentials and compromise all resources in your account.
                 * Common methods for obtaining environment variables:
                 * Obtain the AccessKey ID of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
                 * Obtain the AccessKey Secret of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                 */
                AccessKeyId: tea.String(""),
      • Cancele uma tarefa de moderação de vídeo

        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() {
        	// Storing AccessKeys in your project code may lead to security risks. We recommend that you use a more secure method, such as STS, for authentication. The following code is for reference only.
            config := &openapi.Config{
                /**
                 * The AccessKey of an Alibaba Cloud account has permissions to all APIs. We recommend that you use a RAM user for API access and routine O&M.
                 * We strongly recommend that you do not hardcode your AccessKey ID and AccessKey Secret in your project code. This can expose your credentials and compromise all resources in your account.
                 * Common methods for obtaining environment variables:
                 * Obtain the AccessKey ID of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
                 * Obtain the AccessKey Secret of a RAM user: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                 */
                AccessKeyId: tea.String(""),

    C# SDK

    Consulte o código source do SDK.

    Há suporte para os três tipos de detecção de vídeo a seguir.

    Instruções

    Moderação de vídeos acessíveis publicamente

    Cenário

    Quando um vídeo está acessível pela rede pública, o serviço de moderação de vídeo 2.0 busca o arquivo diretamente pela URL para realizar a moderação.

    1. Execute o comando abaixo para instalar a dependência necessária.

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

      • Exemplo de código para enviar uma tarefa de moderação de vídeo

        using System;
        using System.Collections.Generic;
        using Newtonsoft.Json;
        using Tea;
        
        namespace AlibabaCloud.SDK.Sample
        {
            public class Sample
            {
                /**
                 * Initialize the client with an AccessKey pair.
                 * @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,
                    };
                    // The endpoint of the service.
                    config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                    return new AlibabaCloud.SDK.Green20220302.Client(config);
                }
        
                public static void Main(string[] args)
                {
                    // For security reasons, do not hard-code your AccessKey pair in your code.
                    // We recommend that you use a more secure method, such as Security Token Service (STS), or load credentials from environment variables.
                    /**
                    * An AccessKey pair for an Alibaba Cloud account has permissions on all APIs. We recommend that you use a RAM user for API access or daily O&M.
                    * We strongly recommend that you do not store an AccessKey ID and an AccessKey secret in your code. Otherwise, the AccessKey pair may be compromised, which threatens the security of all your resources.
                    * A common practice is to read credentials from environment variables:
                    * Get the AccessKey ID of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                    * Get the AccessKey secret of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                    */
                    string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                    string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        
                    // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
                    AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                    // Build the moderation request.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest();
                    // The moderation service to use.
                    videoModerationRequest.Service = "videoDetection_global";
                    Dictionary<string, object> serviceParameters = new Dictionary<string, object>();
                    // The URL of the video to be moderated. The URL must be publicly accessible.
                    serviceParameters.Add("url", "https://your-video-url.mp4");
                    videoModerationRequest.ServiceParameters = JsonConvert.SerializeObject(serviceParameters);
                    // Create a RuntimeOptions instance and set runtime parameters.
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    runtime.ReadTimeout = 10000;
                    runtime.ConnectTimeout = 10000;
                    try
                    {
                        // Submit the moderation task.
                        AlibabaCloud.SDK.Green20220302.Models.VideoModerationResponse response = client.VideoModerationWithOptions(videoModerationRequest, runtime);
                        if (response != null)
                        {
                            Console.WriteLine("Response StatusCode: " + response.StatusCode);
                            if (response.Body != null)
                            {
                                Console.WriteLine("RequestId: " + response.Body.RequestId);
                                Console.WriteLine("Code: " + response.Body.Code);
                                Console.WriteLine("Message: " + response.Body.Message);
                                if (response.Body.Data != null)
                                {
                                    Console.WriteLine("TaskId: " + response.Body.Data.TaskId);
                                }
                            }
                        }
                    }
                    catch (TeaException error)
                    {
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("Error: " + error);
                    }
                    catch (Exception _error)
                    {
                        TeaException error = new TeaException(new Dictionary<string, object>
                        {
                            { "message", _error.Message }
                        });
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("Error: " + error);
                    }
                }
            }
        }
      • Exemplo de código para consultar os resultados de uma tarefa de moderação de vídeo

        using System;
        using System.Collections.Generic;
        using Newtonsoft.Json;
        using Tea;
        
        namespace AlibabaCloud.SDK.Sample
        {
            public class Sample
            {
                /**
                 * Initialize the client with an AccessKey pair.
                 * @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,
                    };
                    // The endpoint of the service.
                    config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                    return new AlibabaCloud.SDK.Green20220302.Client(config);
                }
        
                public static void Main(string[] args)
                {
                    // For security reasons, do not hard-code your AccessKey pair in your code.
                    // We recommend that you use a more secure method, such as Security Token Service (STS), or load credentials from environment variables.
                    /**
                    * An AccessKey pair for an Alibaba Cloud account has permissions on all APIs. We recommend that you use a RAM user for API access or daily O&M.
                    * We strongly recommend that you do not store an AccessKey ID and an AccessKey secret in your code. Otherwise, the AccessKey pair may be compromised, which threatens the security of all your resources.
                    * A common practice is to read credentials from environment variables:
                    * Get the AccessKey ID of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                    * Get the AccessKey secret of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                    */
                    string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                    string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        
                    // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
                    AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                    // Build the moderation request.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest();
                    // The moderation service to use.
                    videoModerationResultRequest.Service = "videoDetection_global";
                    Dictionary<string, object> serviceParameters = new Dictionary<string, object>();
                    // The ID of the task to query.
                    serviceParameters.Add("taskId", "");
                    videoModerationResultRequest.ServiceParameters = JsonConvert.SerializeObject(serviceParameters);
                    // Create a RuntimeOptions instance and set runtime parameters.
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    runtime.ReadTimeout = 10000;
                    runtime.ConnectTimeout = 10000;
                    try
                    {
                        // Submit the query request.
                        AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response = client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime);
                        if (response != null)
                        {
                            Console.WriteLine("Response StatusCode: " + response.StatusCode);
                            if (response.Body != null)
                            {
                                Console.WriteLine("RequestId: " + response.Body.RequestId);
                                Console.WriteLine("Code: " + response.Body.Code);
                                Console.WriteLine("Message: " + response.Body.Message);
                                if (response.Body.Data != null)
                                {
                                    Console.WriteLine("TaskId: " + response.Body.Data.TaskId);
                                    Console.WriteLine("LiveId: " + response.Body.Data.LiveId);
                                    Console.WriteLine("RiskLevel: " + response.Body.Data.RiskLevel);
                                    Console.WriteLine("Url: " + response.Body.Data.Url);
                                    Console.WriteLine("SliceDetails: " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails));
                                }
                            }
                        }
                    }
                    catch (TeaException error)
                    {
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("Error: " + error);
                    }
                    catch (Exception _error)
                    {
                        TeaException error = new TeaException(new Dictionary<string, object>
                        {
                            { "message", _error.Message }
                        });
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("Error: " + error);
                    }
                }
            }
        }

    Moderar um vídeo local

    Cenários

    Se o vídeo estiver na sua máquina local e não possuir uma URL pública, faça o upload para um bucket do Object Storage Service (OSS) fornecido pelo Content Moderation. Assim, o serviço Video Moderation 2.0 acessa diretamente o OSS para recuperar o vídeo e realizar a moderação.

    1. Execute o comando abaixo para adicionar a dependência necessária.

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

      Instale o SDK do OSS:

      Install using NuGet 
      1. If NuGet is not installed in your Visual Studio, install NuGet first.
      2. In Visual Studio, create a project or open an existing one, and then choose Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
      3. Search for aliyun.oss.sdk. In the search results, find Aliyun.OSS.SDK (for .NET Framework) or Aliyun.OSS.SDK.NetCore.
    2. Integre o SDK de C#.

      • Envie uma tarefa de moderação de vídeo

        // This file is auto-generated, don't edit it. Thanks.
        
        using System;
        using Newtonsoft.Json;
        using Aliyun.OSS;
        
        namespace AlibabaCloud.SDK.Green20220302
        {
            public class VideoModerationAutoRoute
            {
                // The token for file uploads.
                public static Dictionary<String, Models.DescribeUploadTokenResponse> tokenDic =
                    new Dictionary<String, Models.DescribeUploadTokenResponse>();
        
                // The client for file uploads.
                public static OssClient ossClient = null;
        
                // Specifies whether the service is deployed in a VPC.
                public static Boolean isVPC = false;
        
                public static void Main(string[] args)
                {
                    /**
                    * An AccessKey pair grants full permissions to your Alibaba Cloud account. We recommend using a RAM user for API access and routine O&M.
                    * We strongly recommend that you do not save the AccessKey ID and AccessKey Secret in your code. This can lead to credential leaks and compromise your account security.
                    * A common practice is to read credentials from environment variables:
                    * To retrieve the AccessKey ID of the RAM user, call Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID").
                    * To retrieve the AccessKey secret of the RAM user, call Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET").
                    */
                    String accessKeyId = "We recommend that you retrieve the AccessKey ID from an environment variable.";
                    String accessKeySecret = "We recommend that you retrieve the AccessKey secret from an environment variable.";
                    // Modify the region and endpoint based on your actual requirements.
                    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));
                }
        
                // Creates a client.
                public static Client createClient(
                    String accessKeyId,
                    String accessKeySecret,
                    String endpoint
                )
                {
                    AlibabaCloud.OpenApiClient.Models.Config config =
                        new AlibabaCloud.OpenApiClient.Models.Config
                        {
                            AccessKeyId = accessKeyId,
                            AccessKeySecret = accessKeySecret,
                            // Specify an HTTP proxy.
                            //HttpProxy = "http://10.10.xx.xx:xxxx",
                            // Specify an HTTPS proxy.
                            //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999",
                            // The endpoint of the service.
                            Endpoint = endpoint,
                        };
                    return new Client(config);
                }
        
                // Creates a client for file uploads.
                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
                        );
                    }
                }
        
                // Uploads a file.
                public static String uploadFile(
                    String filePath,
                    Models.DescribeUploadTokenResponse tokenResponse
                )
                {
                    // Create an OssClient instance.
                    ossClient = getOssClient(tokenResponse, isVPC);
                    var tokenData = tokenResponse.Body.Data;
        
                    String objectName =
                        tokenData.FileNamePrefix
                        + Guid.NewGuid().ToString()
                        + "."
                        + filePath.Split(".").GetValue(1);
                    // Upload the file.
                    ossClient.PutObject(tokenData.BucketName, objectName, filePath);
                    return objectName;
                }
        
                // Submits a moderation request.
                public static Models.VideoModerationResponse invoke(
                    String accessKeyId,
                    String accessKeySecret,
                    String endpoint
                )
                {
                    // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
                    Client client = createClient(accessKeyId, accessKeySecret, endpoint);
        
                    // Set runtime options. The settings are valid only for requests that use this RuntimeOptions instance.
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions =
                        new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
        
                    // The full path of the local file. Example: D:\\localPath\\exampleFile.mp4.
                    String filePath = "D:\\localPath\\exampleFile.mp4";
                    try
                    {
                        // Obtain a temporary token for file uploads.
                        if (
                            !tokenDic.ContainsKey(endpoint)
                            || tokenDic[endpoint].Body.Data.Expiration
                                <= DateTimeOffset.Now.ToUnixTimeSeconds()
                        )
                        {
                            var tokenResponse = client.DescribeUploadToken();
                            tokenDic[endpoint] = tokenResponse;
                        }
                        // Upload the file.
                        String objectName = uploadFile(filePath, tokenDic[endpoint]);
                        // Construct a moderation request.
                        Models.VideoModerationRequest videoModerationRequest =
                            new Models.VideoModerationRequest();
                        // The service. Example: videoDetection_global.
                          videoModerationRequest.Service = "videoDetection_global";
                        Dictionary<string, object> task = new Dictionary<string, object>();
                        // The file to be moderated.
                        task.Add("ossBucketName", tokenDic[endpoint].Body.Data.BucketName);
                        task.Add("ossObjectName", objectName);
                        // The data ID.
                        task.Add("dataId", Guid.NewGuid().ToString());
                        videoModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task);
                        // Call the API to get the moderation results.
                        Models.VideoModerationResponse response = client.VideoModerationWithOptions(
                            videoModerationRequest,
                            runtimeOptions
                        );
                        return response;
                    }
                    catch (Exception _err)
                    {
                        Console.WriteLine(_err);
                        return null;
                    }
                }
            }
        }
      • Recupere o resultado de uma tarefa de moderação de vídeo

        using Newtonsoft.Json;
        using Tea;
        
        namespace AlibabaCloud.SDK.Sample
        {
            public class Sample
            {
        
                /**
                 * Use an AccessKey pair to initialize a client.
                 * @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,
                    };
                    // The endpoint of the service.
                    config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                    return new AlibabaCloud.SDK.Green20220302.Client(config);
                }
        
                public static void Main(string[] args)
                {
                    // We recommend using a more secure method, such as STS credentials. If you use an AccessKey pair to call API operations, your AccessKey pair may be leaked.
                    /**
                    * An AccessKey pair grants full permissions to your Alibaba Cloud account. We recommend using a RAM user for API access and routine O&M.
                    * We strongly recommend that you do not save the AccessKey ID and AccessKey Secret in your code. This can lead to credential leaks and compromise your account security.
                    * A common practice is to read credentials from environment variables:
                    * To retrieve the AccessKey ID of the RAM user, call Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID").
                    * To retrieve the AccessKey secret of the RAM user, call Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET").
                    */
                    string accessKeyId = "We recommend that you retrieve the AccessKey ID from an environment variable.";
                    string accessKeySecret = "We recommend that you retrieve the AccessKey secret from an environment variable.";
                    // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
                    AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                    // Construct a moderation request.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest();
                    // The moderation service.
                    videoModerationResultRequest.Service="videoDetection_global";
                    Dictionary<String,Object> task=new Dictionary<string, object>();
                    // The ID of the task to query.
                    task.Add("taskId","");
                    videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task);
                    // Create a RuntimeOptions instance and set runtime parameters.
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    runtime.ReadTimeout = 10000;
                    runtime.ConnectTimeout = 10000;
                    try
                    {
                        // Retrieve the moderation results.
                      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)
                    {
                        // Print the error if required.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("error : " + error);
                    }
                    catch (Exception _error)
                    {
                        TeaException error = new TeaException(new Dictionary<string, object>
                        {
                            { "message", _error.Message }
                        });
                        // Print the error if required.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("error : " + error);
                    }
                }
            }
        }

    Moderação de vídeos no OSS

    Casos de uso

    Para moderar um arquivo de vídeo armazenado no Alibaba Cloud Object Storage Service (OSS), crie uma função de serviço que conceda ao serviço Content Moderation acesso ao OSS. O serviço Video Moderation V2.0 utiliza essa função para recuperar e moderar o arquivo. Crie a função de serviço na página Cloud Resource Access Authorization.

    1. Execute o comando a seguir para importar a dependência necessária.

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

      • Exemplo de código para enviar uma tarefa de moderação de vídeo

        using System;
        using System.Collections.Generic;
        using Newtonsoft.Json;
        using Tea;
        
        namespace AlibabaCloud.SDK.Sample
        {
            public class Sample
            {
        
                /**
                 * Initialize the client with an AccessKey pair.
                 * @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,
                    };
                    // The endpoint of the service.
                    config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                    return new AlibabaCloud.SDK.Green20220302.Client(config);
                }
        
                public static void Main(string[] args)
                {
                    // Leaking your AccessKey pair in the project code may compromise the security of all resources in your account.
                    // The following code is for reference only. We recommend that you use a more secure method, such as Security Token Service (STS), to manage your credentials.
                    /**
                    * An AccessKey pair for an Alibaba Cloud account has permissions on all APIs. We recommend that you use a RAM user for API access or daily O&M.
                    * We strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your project code.
                    * Otherwise, your AccessKey pair may be leaked, which threatens the security of all resources in your account.
                    * A common practice is to read credentials from environment variables:
                    * Get the AccessKey ID of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                    * Get the AccessKey secret of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                    */
                    string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                    string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                    // Note: To improve performance, reuse the client instance and avoid establishing a new connection for each request.
                    AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                    // Build the moderation request.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest();
                    // Specify the moderation service.
                    videoModerationRequest.Service="videoDetection_global";
                    Dictionary<String,Object> serviceParameters=new Dictionary<string, object>();
                    // Example of passing parameters for an OSS file.
                    serviceParameters.Add("ossBucketName","your-bucket-name");
                    serviceParameters.Add("ossObjectName","test/sample.mp4");
                    serviceParameters.Add("ossRegionId","ap-southeast-1");
                    videoModerationRequest.ServiceParameters=JsonConvert.SerializeObject(serviceParameters);
                    // Create a RuntimeOptions instance and set runtime parameters.
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    runtime.ReadTimeout = 10000;
                    runtime.ConnectTimeout = 10000;
                    try
                    {
                        // Submit the moderation task.
                      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)
                    {
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("error: " + error);
                    }
                    catch (Exception _error)
                    {
                        TeaException error = new TeaException(new Dictionary<string, object>
                        {
                            { "message", _error.Message }
                        });
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("error: " + error);
                    }
                }
            }
        }
      • Exemplo de código para obter resultados da moderação de vídeo

        using System;
        using System.Collections.Generic;
        using Newtonsoft.Json;
        using Tea;
        
        namespace AlibabaCloud.SDK.Sample
        {
            public class Sample
            {
        
                /**
                 * Initialize the client with an AccessKey pair.
                 * @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,
                    };
                    // The endpoint of the service.
                    config.Endpoint = "green-cip.ap-southeast-1.aliyuncs.com";
                    return new AlibabaCloud.SDK.Green20220302.Client(config);
                }
        
                public static void Main(string[] args)
                {
                    // Leaking your AccessKey pair in the project code may compromise the security of all resources in your account.
                    // The following code is for reference only. We recommend that you use a more secure method, such as Security Token Service (STS), to manage your credentials.
                    /**
                    * An AccessKey pair for an Alibaba Cloud account has permissions on all APIs. We recommend that you use a RAM user for API access or daily O&M.
                    * We strongly recommend that you do not hard-code your AccessKey ID and AccessKey Secret in your project code.
                    * Otherwise, your AccessKey pair may be leaked, which threatens the security of all resources in your account.
                    * A common practice is to read credentials from environment variables:
                    * Get the AccessKey ID of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                    * Get the AccessKey secret of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                    */
                    string accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                    string accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
                    // Note: To improve performance, reuse the client instance and avoid establishing a new connection for each request.
                    AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret);
                    // Build the query request.
                    AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest();
                    // Specify the moderation service.
                    videoModerationResultRequest.Service="videoDetection_global";
                    Dictionary<String,Object> serviceParameters=new Dictionary<string, object>();
                    // The ID of the task to query.
                    serviceParameters.Add("taskId","<your_task_id>");
                    videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(serviceParameters);
                    // Create a RuntimeOptions instance and set runtime parameters.
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    runtime.ReadTimeout = 10000;
                    runtime.ConnectTimeout = 10000;
                    try
                    {
                        // Submit the query request.
                      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)
                    {
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("error: " + error);
                    }
                    catch (Exception _error)
                    {
                        TeaException error = new TeaException(new Dictionary<string, object>
                        {
                            { "message", _error.Message }
                        });
                        // If an error occurs, print the error details.
                        AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
                        Console.WriteLine("error: " + error);
                    }
                }
            }
        }

    Node.js SDK

    Consulte o código-fonte do SDK para Node.js.

    Este serviço oferece suporte a três métodos de detecção de vídeo.

    Vídeos acessíveis publicamente

    Casos de uso

    Se um vídeo estiver acessível por meio de uma URL pública, o serviço Video Moderation V2.0 poderá buscá-lo diretamente pela URL para realizar a moderação.

    1. Execute o comando a seguir para instalar a dependência.

      npm install @alicloud/green20220302@3.2.4
    2. Integre o SDK para Node.js.

      • Código de exemplo para enviar uma tarefa de moderação de vídeo

        const Green20220302 = require('@alicloud/green20220302');
        const OpenApi = require('@alicloud/openapi-client');
        const Util = require('@alicloud/tea-util');
        // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
        // For security reasons, do not hard-code your AccessKey pair in your code. Hard-coding your credentials can lead to leakage and compromise the security of all your resources. The following sample code is for reference only.
        class Client {
            static createClient() {
                const config = new OpenApi.Config({
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    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();
                // Construct the request object.
                const videoModerationRequest = new Green20220302.VideoModerationRequest({
                    // The video moderation service.
                    "service": "videoDetection_global",
                    // The URL of the video to moderate.
                    "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"})
                });
                // Create a runtime options object.
                const runtime = new Util.RuntimeOptions();
                try {
                    // Send the request and get the response.
                    const response = await client.videoModerationWithOptions(videoModerationRequest, runtime);
                    console.log(JSON.stringify(response.body));
                } catch (error) {
                    // This is for demonstration purposes only. Handle exceptions with caution in your projects and do not ignore them.
                    // The error message.
                    console.log('Error occurred:', error.message);
                }
            }
        }
        
        Client.main();
      • Código de exemplo para consultar o resultado de uma tarefa de moderação de vídeo

        const Green20220302 = require('@alicloud/green20220302');
        const OpenApi = require('@alicloud/openapi-client');
        const Util = require('@alicloud/tea-util');
        // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
        // For security reasons, do not hard-code your AccessKey pair in your code. Hard-coding your credentials can lead to leakage and compromise the security of all your resources. The following sample code is for reference only.
        class Client {
            static createClient() {
                const config = new OpenApi.Config({
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    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();
                // Construct the request object.
                const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                    // The video moderation service.
                    "service": "videoDetection_global",
                    "serviceParameters": JSON.stringify({"taskId":"<The ID of the video moderation task whose result you want to query>"})
                });
                // Create a runtime options object.
                const runtime = new Util.RuntimeOptions();
                try {
                    // Send the request and get the response.
                    const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime);
                    console.log(JSON.stringify(response.body));
                } catch (error) {
                    // This is for demonstration purposes only. Handle exceptions with caution in your projects and do not ignore them.
                    // The error message.
                    console.log('Error occurred:', error.message);
                }
            }
        }
        
        Client.main();

    Vídeos locais

    Casos de uso

    Para moderar um vídeo local que não possui uma URL pública, faça o upload dele para um bucket do Object Storage Service (OSS) fornecido pelo Content Moderation. Em seguida, o serviço Video Moderation V2.0 recupera o vídeo diretamente do OSS para realizar a moderação.

    1. Execute o comando a seguir para instalar a dependência.

      npm install @alicloud/green20220302@3.2.4
    2. Integre o SDK para Node.js.

      • Código de exemplo para enviar uma tarefa de moderação de vídeo

        const RPCClient = require("@alicloud/pop-core");
        const OSS = require('ali-oss');
        const { v4: uuidv4 } = require('uuid');
        const path = require("path");
        
        // Specifies whether the service is deployed in a VPC.
        var isVPC = false;
        // The token for file upload.
        var tokenDic = new Array();
        // The client for file upload.
        var ossClient;
        
        // Create a client for file upload.
        function createClient(accessKeyId, accessKeySecret, endpoint) {
            return new RPCClient({
                accessKeyId: accessKeyId,
                accessKeySecret: accessKeySecret,
                endpoint: endpoint,
                apiVersion: '2022-03-02',
                // Set an HTTP proxy.
                //httpProxy: "http://xx.xx.xx.xx:xxxx",
                // Set an HTTPS proxy.
                //httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
            });
        }
        
        // Create a client for file upload.
        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'],
                });
            }
        }
        
        // Submit a moderation task.
        async function invoke(accessKeyId, accessKeySecret, endpoint) {
            // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
            var client = createClient(accessKeyId, accessKeySecret, endpoint);
            var requestOption = {
                method: 'POST',
                formatParams: false,
            };
            // The full path of the local file. Example: D:\\localPath\\exampleFile.mp4.
            var filePath = 'D:\\localPath\\exampleFile.mp4';
        
            // Get the token for file upload.
            if (tokenDic[endpoint] == null || tokenDic[endpoint]['Expiration'] <= Date.parse(new Date() / 1000)) {
                var tokenResponse = await client.request('DescribeUploadToken', '', requestOption)
                tokenDic[endpoint] = tokenResponse.Data;
            }
        
            // Get the client for file upload.
            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();
            }
            // Upload the file.
            const result = await ossClient.put(objectName, path.normalize(filePath));
        
            // Create a moderation API request and set the parameters.
            var params = {
                // The video moderation service. Example: videoDetection_global
                "Service": "videoDetection_global",
                // Information about the uploaded local video.
                "ServiceParameters": JSON.stringify({
                    "ossBucketName": tokenDic[endpoint].BucketName,
                    "ossObjectName": objectName
                })
            }
            // Call the API to get the moderation result.
            return await client.request('VideoModeration', params, requestOption);
        }
        
        function main() {
            /**
            * An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M.
            * We strongly recommend that you do not hard-code the AccessKey ID and AccessKey secret in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources in your account may be compromised.
            * Common methods to obtain environment variables:
            * Obtain the AccessKey ID of the RAM user: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID']
            * Obtain the AccessKey secret of the RAM user: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            */
            const accessKeyId = 'We recommend that you obtain the AccessKey ID of a RAM user from an environment variable.'
            const accessKeySecret = 'We recommend that you obtain the AccessKey secret of a RAM user from an environment variable.'
            // Modify the region and endpoint based on your actual requirements.
            var endpoint = "https://green-cip.ap-southeast-1.aliyuncs.com"
        
            try {
                var response;
                // Call the API to get the moderation result.
                invoke(accessKeyId, accessKeySecret, endpoint).then(function (response) {
                    console.log(JSON.stringify(response))
                })
            } catch (err) {
                console.log(err);
            }
        }
        
        main();
      • Código de exemplo para consultar o resultado de uma tarefa de moderação de vídeo

        const Green20220302 = require('@alicloud/green20220302');
        const OpenApi = require('@alicloud/openapi-client');
        const Util = require('@alicloud/tea-util');
        // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
        // For security reasons, do not hard-code your AccessKey pair in your code. Hard-coding your credentials can lead to leakage and compromise the security of all your resources. The following sample code is for reference only.
        class Client {
            static createClient() {
                const config = new OpenApi.Config({
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    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();
                // Construct the request object.
                const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                    // The video moderation service.
                    "service": "videoDetection_global",
                    "serviceParameters": JSON.stringify({"taskId":"<The ID of the video moderation task whose result you want to query>"})
                });
                // Create a runtime options object.
                const runtime = new Util.RuntimeOptions();
                try {
                    // Send the request and get the response.
                    const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime);
                    console.log(JSON.stringify(response.body));
                } catch (error) {
                    // This is for demonstration purposes only. Handle exceptions with caution in your projects and do not ignore them.
                    // The error message.
                    console.log('Error occurred:', error.message);
                }
            }
        }
        
        Client.main();

    Vídeos no OSS

    Casos de uso

    Se os arquivos de vídeo que você precisa moderar estiverem armazenados no Object Storage Service (OSS) da Alibaba Cloud, crie uma função de serviço para permitir que o Content Moderation acesse o OSS. O serviço Video Moderation V2.0 utiliza essa função de serviço para recuperar os arquivos do OSS e realizar a moderação. Acesse a página de Autorização de Acesso a Recursos na Nuvem para criar a função de serviço.

    1. Execute o comando a seguir para instalar a dependência.

      npm install @alicloud/green20220302@3.2.4
    2. Integre o SDK para Node.js.

      • Código de exemplo para enviar uma tarefa de moderação de vídeo

        const Green20220302 = require('@alicloud/green20220302');
        const OpenApi = require('@alicloud/openapi-client');
        const Util = require('@alicloud/tea-util');
        // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
        // For security reasons, do not hard-code your AccessKey pair in your code. Hard-coding your credentials can lead to leakage and compromise the security of all your resources. The following sample code is for reference only.
        class Client {
            static createClient() {
                const config = new OpenApi.Config({
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    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();
                // Construct the request object.
                const videoModerationRequest = new Green20220302.VideoModerationRequest({
                    // The video moderation service.
                    "service": "videoDetection_global",
                    "serviceParameters": JSON.stringify({
                    // The region where the bucket that stores the file is located. Example: cn-shanghai
                    "ossRegionId": "cn-shanghai",
                    // The name of the bucket that stores the file. Example: bucket001
                    "ossBucketName": "bucket001",
                    // The file to be moderated. Example: video/001.mp4
                    "ossObjectName": "video/001.mp4",})
                });
                // Create a runtime options object.
                const runtime = new Util.RuntimeOptions();
                try {
                    // Send the request and get the response.
                    const response = await client.videoModerationWithOptions(videoModerationRequest, runtime);
                    console.log(JSON.stringify(response.body));
                } catch (error) {
                    // This is for demonstration purposes only. Handle exceptions with caution in your projects and do not ignore them.
                    // The error message.
                    console.log('Error occurred:', error.message);
                }
            }
        }
        
        Client.main();
      • Código de exemplo para consultar o resultado de uma tarefa de moderação de vídeo

        const Green20220302 = require('@alicloud/green20220302');
        const OpenApi = require('@alicloud/openapi-client');
        const Util = require('@alicloud/tea-util');
        // Note: To improve performance, reuse the client instance to avoid establishing a new connection for each request.
        // For security reasons, do not hard-code your AccessKey pair in your code. Hard-coding your credentials can lead to leakage and compromise the security of all your resources. The following sample code is for reference only.
        class Client {
            static createClient() {
                const config = new OpenApi.Config({
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    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();
                // Construct the request object.
                const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({
                    // The video moderation service.
                    "service": "videoDetection_global",
                    "serviceParameters": JSON.stringify({"taskId":"<The ID of the video moderation task whose result you want to query>"})
                });
                // Create a runtime options object.
                const runtime = new Util.RuntimeOptions();
                try {
                    // Send the request and get the response.
                    const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime);
                    console.log(JSON.stringify(response.body));
                } catch (error) {
                    // This is for demonstration purposes only. Handle exceptions with caution in your projects and do not ignore them.
                    // The error message.
                    console.log('Error occurred:', error.message);
                }
            }
        }
        
        Client.main();

    Requisições HTTPS diretas

    • Invocation Method

      Endpoint do serviço: https://green-cip.{region}.aliyuncs.com

      Protocolo: HTTPS

      Método: POST

    • Common request parameters

      As chamadas de API para moderação aprimorada de áudio incluem parâmetros de requisição comuns e específicos da operação. Todas as chamadas de API devem conter os parâmetros comuns listados na tabela abaixo.

      Parâmetro

      Tipo

      Obrigatório

      Descrição

      Format

      String

      Sim

      Formato da resposta. Valores válidos:

      • JSON (padrão)

      • XML

      Version

      String

      Sim

      Versão da API no formato AAAA-MM-DD. A versão atual é 2022-03-02.

      AccessKeyId

      String

      Sim

      Seu AccessKey ID da Alibaba Cloud.

      Signature

      String

      Sim

      String de assinatura. Para detalhes sobre o cálculo, consulte a seção "Mecanismo de assinatura".

      SignatureMethod

      String

      Sim

      Método de assinatura. O único valor suportado é HMAC-SHA1.

      Timestamp

      String

      Sim

      Timestamp da requisição em UTC, formatado conforme o padrão ISO 8601.

      Formato: aaaa-MM-ddTHH:mm:ssZ.

      Por exemplo, 09:13:14 em 12 de dezembro de 2022 (UTC+8) é representado como 2022-12-12T01:13:14Z.

      SignatureVersion

      String

      Sim

      Versão do algoritmo de assinatura. Defina o valor como 1.0.

      SignatureNonce

      String

      Sim

      Número aleatório único (nonce) que deve ser diferente para cada requisição, evitando ataques de replay de rede.

      Action

      String

      Sim

      Valores válidos:

      • VideoModeration

      • VideoModerationResult

    • Common response parameters

      O sistema retorna um ID de requisição exclusivo (RequestId) para cada chamada de API, independentemente do resultado. Os demais parâmetros de resposta variam conforme a API específica invocada.

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

      Os exemplos abaixo estão formatados para facilitar a leitura. As respostas reais da API não incluem quebras de linha nem indentação.

      • Envio de uma tarefa de moderação

        Exemplo de requisição

        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"}

        Exemplo de resposta

        {
            "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2",
            "Message":"SUCCESS",
            "Data":{
                "TaskId":"vi_f_O5xxxxxxxxxxxxxxqa-1x****"
            },
            "Code":200
        }
      • Consulta do resultado de uma tarefa

        Exemplo de requisição

        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****"}

        Exemplo de resposta

        {
            "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 elements",
                            "LabelSum": 8
                        },
                        {
                            "Label": "sexual_cleavage",
                            "Description": "Suspected content with partial nudity or sexually suggestive elements",
                            "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 elements"
                                        }
                                    ],
                                    "Service": "baselineCheck"
                                },
                                {
                                    "Result": [
                                        {
                                            "Confidence": 1,
                                            "Label": "sexual_cleavage",
                                            "Description": "Suspected content with partial nudity or sexually suggestive elements"
                                        }
                                    ],
                                    "Service": "baselineCheck_pro"
                                }
                            ],
                            "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test2.jpg"
                        }
                    ]
                }
            }
        }
    • Signing mechanism

      O serviço de moderação aprimorada de áudio autentica cada requisição por meio de uma assinatura. Esse mecanismo utiliza criptografia simétrica com um AccessKey ID e um AccessKey Secret para verificar a identidade do remetente.

      A Alibaba Cloud fornece seu AccessKey ID e AccessKey Secret, que você pode gerenciar no site da plataforma. O AccessKey Secret serve para criptografar a string de assinatura destinada à verificação no servidor. Mantenha seu AccessKey Secret em sigilo.

      Para assinar uma requisição, siga estas etapas:

      1. Crie uma string de consulta canônica a partir dos parâmetros da requisição.

        1. Ordene todos os parâmetros da requisição (incluindo os comuns e os específicos da operação, mas excluindo o parâmetro Signature) pelo nome do parâmetro em ordem lexicográfica.

        2. Codifique os nomes e valores dos parâmetros ordenados usando codificação URL UTF-8.

          Nota

          A maioria das bibliotecas de codificação URL, como java.net.URLEncoder em Java, segue as regras do tipo MIME application/x-www-form-urlencoded. É possível usar essas bibliotecas para a codificação, mas é necessário substituir os sinais de mais (+) por %20, os asteriscos (*) por %2A e %7E por til (~).

          As regras de codificação URL são as seguintes:

          • Não codifique os seguintes caracteres: letras maiúsculas (A-Z), letras minúsculas (a-z), dígitos (0-9), hifens (-), sublinhados (_), pontos (.) e tils (~).

          • Os demais caracteres devem ser codificados no formato %XY, onde XY representa o código ASCII do caractere em hexadecimal. Por exemplo, as aspas duplas (") são codificadas como %22.

          • Caracteres UTF-8 estendidos seguem o formato %XY%ZA….

          • Observe que o caractere de espaço é codificado como %20, e não como sinal de mais (+).

        3. Una cada nome de parâmetro codificado ao seu respectivo valor com um sinal de igual (=).

        4. Concatene esses pares 'nome=valor' na ordem original de classificação, usando e comercial (&), para formar a string de consulta canônica.

      2. Construa a string a ser assinada a partir da string de consulta canônica conforme o modelo:

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

        HTTPMethod corresponde ao método HTTP usado para enviar a requisição, como POST. percentEncode(/) é o valor obtido pela codificação URL da barra (/) conforme descrito na seção a.ii, resultando em %2F. percentEncode(CanonicalQueryString) é a string obtida pela codificação URL da string de consulta canônica da seção a.i, seguindo as regras da seção a.ii.

      3. Calcule o valor HMAC da string a ser assinada conforme definido na RFC2104.

        Nota

        Note que a chave usada para calcular a assinatura é o seu AccessKey Secret seguido pelo caractere & (ASCII: 38). O algoritmo de hash utilizado é o SHA1.

      4. Codifique o valor HMAC em Base64 para obter a string de assinatura.

      5. Adicione a string de assinatura à requisição como o parâmetro Signature.

        Nota

        Lembre-se de aplicar a codificação URL na string de assinatura conforme a RFC 3986 antes de adicioná-la à requisição.