Manual video review

更新时间:
复制 MD 格式

This topic describes how to use the .NET software development kit (SDK) to perform a manual video review.

Feature description

If a video detection result does not meet your expectations, you can perform a manual review. For more information about the parameters, see Video manual review API documentation.

Use the AI Guardrails API endpoint to call this SDK. For more information about API endpoints, see Endpoints.

Note
  • The SDK accepts only public video URLs. It does not accept local files or binary data.

  • Supported URL types:

    • HTTP/HTTPS URLs on the Internet. The URL can be up to 2,048 characters in length.

    • Alibaba Cloud Object Storage Service (OSS) URL: oss://<bucket-name>.<endpoint>/<object-name>. You must grant AI Guardrails access to the destination OSS bucket. The bucket and the AI Guardrails service must be in the same region. For more information, see Grant AI Guardrails access to an OSS bucket.

Prerequisites

The .NET dependencies must be installed. For instructions, see Install .NET dependencies.

Note

You must use the required .NET version described in the Installation topic to install the dependencies. Otherwise, subsequent operation calls fail.

Submit a manual video review task

using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20180509;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            /**
             * Common methods to obtain environment variables:
             *     Obtain the AccessKey ID of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
             *     Obtain the AccessKey secret of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            DefaultProfile profile = DefaultProfile.GetProfile(
                    "cn-shanghai",
                    "Obtain the AccessKey ID of the RAM user from an environment variable",
                    "Obtain the AccessKey secret of the RAM user from an environment variable");
            // Note: To improve detection performance, reuse the instantiated client. Avoid creating a new connection for each request.
            DefaultAcsClient client = new DefaultAcsClient(profile);

            VideoAsyncManualScanRequest request = new VideoAsyncManualScanRequest();
            request.AcceptFormat = FormatType.JSON;
            request.ContentType = FormatType.JSON;
            request.Method = MethodType.POST;
            request.Encoding = "UTF-8";

            Dictionary<string, object> task1 = new Dictionary<string, object>();
            task1.Add("dataId", "The data ID");
            task1.Add("url", "The video URL");

            // The callback and seed parameters are optional and used for callback notifications.
            Dictionary<string, object> httpBody = new Dictionary<string, object>();
            httpBody.Add("bizType", "The business scenario");
            httpBody.Add("callback", "The webhook address");
            httpBody.Add("seed", "A random string");
            httpBody.Add("tasks", new List<Dictionary<string, object>> { task1 });

            request.SetContent(System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(httpBody)), "utf-8", FormatType.JSON);
            try
            {
                VideoAsyncManualScanResponse response = client.GetAcsResponse(request);
                if (response.HttpResponse.Status != 200)
                {
                    Console.WriteLine("the request failed. status:{0}", response.HttpResponse.Status);
                }
                Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

Query the result of a manual video review task

using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20180509;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            /**
             * Common methods to obtain environment variables:
             *     Obtain the AccessKey ID of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
             *     Obtain the AccessKey secret of the RAM user: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            DefaultProfile profile = DefaultProfile.GetProfile(
                    "cn-shanghai",
                    "Obtain the AccessKey ID of the RAM user from an environment variable",
                    "Obtain the AccessKey secret of the RAM user from an environment variable");
            // Note: To improve detection performance, reuse the instantiated client. Avoid creating a new connection for each request.
            DefaultAcsClient client = new DefaultAcsClient(profile);

            VideoAsyncManualScanResultsRequest request = new VideoAsyncManualScanResultsRequest();
            request.AcceptFormat = FormatType.JSON;
            request.ContentType = FormatType.JSON;
            request.Method = MethodType.POST;
            request.Encoding = "UTF-8";

            List<string> tasks = new List<string>();
            tasks.Add("The ID of the manual video review task");

            request.SetContent(System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(tasks)), "utf-8", FormatType.JSON);
            try
            {
                VideoAsyncManualScanResultsResponse response = client.GetAcsResponse(request);
                if (response.HttpResponse.Status != 200)
                {
                    Console.WriteLine("the request failed. status:{0}", response.HttpResponse.Status);
                }
                Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}