文档

视频违规检测

更新时间:

视频违规检测用于检测视频是否违规,帮助用户提高审核效率,降低安全风险。本文介绍视频违规检测的应用场景、使用限制和示例代码等。

应用场景

视频违规信息检测通常用于视频智能鉴黄、视频涉政暴恐、视频不良场景、视频Logo识别、视频图文违规等基本场景。关于视频违规检测支持的检测内容,请参见视频违规检测

使用限制

视频违规检测的使用限制如下表所示。

限制项

支持检测的视频格式

视频格式

AVI、MPEG、MPG、DAT、DIVX、XVID、RM、RMVB、MOV、QT、ASF、WMV、VOB、3GP、MP4、FLV、AVS、MKV、TS、OGM、NSV、SWF

前提条件

检测过程

调用CreateVideoModerationTask - 创建视频合规检测任务接口创建异步检测任务,检测视频是否违规。

重要

任务开始执行后,任务信息只保存7天,超过7天则无法再获取。您可以通过以下几种方式及时获取任务信息:

检测信息

  • IMM项目名称:test-project

  • 视频路径:oss://test-bucket/test-object.mp4

  • 检测结果:通过MNS消息返回

    说明

    检测结果通过异步消息通知返回。异步消息通知Suggestion字段取值如下:

    • pass:通过,表示未检测到不合规内容。

    • block:检测到不合规内容,Categories字段为不合规分类。关于分类的更多信息,请参见内容安全检测结果

    • review:需要人工二次审核,人工审核完成后会再发一条异步消息通知告知人工审核结果。

请求示例

{
 "ProjectName": "test-project",
 "SourceURI": "oss://test-bucket/test-object.mp4",
 "Notification": {"RocketMQ": {"Endpoint": "http://1023210024677934.mqrest.cn-beijing.aliyuncs.com", "TopicName": "test-topic", "InstanceId": "test-instance"}}",
 // 您可以指定视频检测场景。如果不指定视频检测场景,则默认进行porn、terrorism、ad三个场景检测。
  "Scenes": ["porn","terrorism","ad","live","qrcode","logo"]
}

返回示例

{
    "TaskId": "VideoModeration-1b77de73-ff9f-4c39-b254-****",
    "RequestId": "D65E8038-C584-0809-9BF0-****",
    "EventId": "392-1KlquE5TFnwOocgHx****"
}

MNS消息

{
    "ProjectName": "test-project",
    "DatasetName": "",
    "RequestId": "D65E8038-C584-0809-9BF0-****",
    "StartTime": "2022-07-04T23:19:12.282Z",
    "EndTime": "2022-07-04T23:19:13.316Z",
    "UserData": "test",
    "TaskType": "VideoModeration",
    "TaskId": "VideoModeration-1b77de73-ff9f-4c39-b254-****",
    "Status": "Succeeded",
    "Code": "",
    "Message": "",
    "URI": "oss://test-bucket/test-object.mp4",
    "Suggestion": "block",
    "Categories": [
        "porn"
    ]
}
说明

Suggestionblock表示该视频违规,Categories中有porn表示视频触发色情违规。

示例代码

以Python SDK为例,视频违规检测的完整示例代码如下。

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        使用AccessKey ID&AccessKey Secret初始化账号Client。
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # 填写访问的域名。
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/2361894.html。
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        notification_rocket_mq = imm_20200930_models.RocketMQ(
            endpoint='http://1023210024677934.mqrest.cn-beijing.aliyuncs.com',
            topic_name='test-topic',
            instance_id='test-instance'
        )
        notification = imm_20200930_models.Notification(
            rocket_mq=notification_rocket_mq
        )
        create_video_moderation_task_request = imm_20200930_models.CreateVideoModerationTaskRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object.mp4',
            scenes=[
                'porn',
                'terrorism',
                'ad',
                'live',
                'qrcode',
                'logo'
            ],
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印API的返回值。
            client.create_video_moderation_task_with_options(create_video_moderation_task_request, runtime)
        except Exception as error:
            # 如有需要,请打印错误信息。
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/2361894.html。
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        notification_rocket_mq = imm_20200930_models.RocketMQ(
            endpoint='http://1023210024677934.mqrest.cn-beijing.aliyuncs.com',
            topic_name='test-topic',
            instance_id='test-instance'
        )
        notification = imm_20200930_models.Notification(
            rocket_mq=notification_rocket_mq
        )
        create_video_moderation_task_request = imm_20200930_models.CreateVideoModerationTaskRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object.mp4',
            scenes=[
                'porn',
                'terrorism',
                'ad',
                'live',
                'qrcode',
                'logo'
            ],
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印API的返回值。
            await client.create_video_moderation_task_with_options_async(create_video_moderation_task_request, runtime)
        except Exception as error:
            # 如有需要,请打印错误信息。
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

  • 本页导读 (1)
文档反馈