异步检测

视频审核帮助您检测视频中的风险或违规内容,具体包括以下场景:视频智能鉴黄、视频暴恐涉政、视频图文违规、视频不良场景、视频logo、视频语音违规。本文介绍了使用API接口异步检测视频的方法。

(视频异步检测)使用说明

业务接口:/green/video/asyncscan,表示视频异步检测。

您可以调用该接口创建视频异步检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

    该接口为收费接口。关于计费方式,请参见内容安全产品定价

    同时检测多个场景的情况下,将按照每个场景的检测视频截帧数量×每个场景的单价进行累加计费。如果同时检测视频中的语音内容违规,则还将增加视频时长×语音违规功能的单价的费用。

  • 检测对象

    支持检测视频文件或视频流,且视频文件支持通过上传视频截帧图片序列或视频URL的方式进行检测。

  • 返回结果

    异步检测任务不会实时返回检测结果,您需要通过callback或者轮询的方式获取检测结果。检测结果最长保留一小时。

    • callback获取检测结果:提交异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果,具体请参见(异步检测)请求参数

    • 轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果,具体请参见(视频异步检测结果查询)使用说明

    视频异步检测接口的调用逻辑如下图所示。

    异步检测流程

  • 视频要求

    • 视频文件链接支持以下协议:HTTP和HTTPS。

    • 视频文件支持以下格式:AVIFLVMP4MPGASFWMVMOVWMARMVBRMFLASHTS

    • 视频大小限制:默认单个视频大小不超过200 MB。

      如果您的需求超过200 MB,需要对视频进行分片处理。您可以加入钉群(钉群号:35573806)联系技术人员帮您调整大小限制。

    • 视频流支持以下协议:RTMP、HLS、HTTP-FLV、RTSP。

    • 视频流时长限制:单个视频流检测任务最长支持24小时,超过24小时任务自动结束。

    • 视频检测的时间依赖于视频的下载时间。请保证被检测的视频文件所在的存储服务稳定可靠,建议您使用阿里云OSS存储服务存储视频文件。

表 1. 场景说明

场景

描述

检测结果分类

视频智能鉴黄

检测视频中是否包含色情内容。

正常、色情

视频暴恐涉政

检测视频中是否包含暴恐涉政内容。

正常、暴恐涉政

视频不良场景

检测视频中是否包含不良场景。

正常、不良场景(例如黑屏、白屏)

视频logo

检测视频中是否包含特定的logo。

正常、logo

视频图文违规

检测视频中是否包含广告或违规的文字内容。

正常、广告或文字违规

视频语音违规

说明

该场景仅支持通过视频异步检测接口调用。如需使用,请参见异步检测

检测视频中的语音内容是否包含违规信息。

说明

默认识别语言为中文。如果您需要识别英文内容,请联系商务经理。

正常、含垃圾信息、广告、涉政、暴恐、辱骂、色情、灌水、违禁、自定义(例如命中自定义关键词)

QPS限制

本接口的单用户QPS限制为50次/秒,并发审核路数限制为20路(即同一时间只能处理20个任务,如需要提升并发路数请咨询您的商务经理)。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。

说明

如果您对时效性要求不高,推荐您开启近线检测模式(offline),近线检测模式会在您提交任务的24小时内开始检测。

(异步检测)请求参数

名称

类型

是否必选

示例值

描述

bizType

String

default

该字段用于标识您的业务场景。您可以通过内容安全控制台创建业务场景(具体操作,请参见自定义机审标准)。

live

Boolean

false

是否直播。取值:

  • false(默认):表示点播视频检测。

  • true:表示直播流检测。

offline

Boolean

false

是否近线检测模式。

  • false(默认):表示实时检测模式,对于超过了并发路数限制的检测请求会直接拒绝。

  • true:表示近线检测模式,提交的任务不保证实时处理,但是可以排队处理,在24小时内开始检测。

说明

该参数仅适用于视频文件检测,视频流检测无需传入该参数。

scenes

StringArray

["porn"]

指定视频检测场景。取值:

  • porn:视频智能鉴黄。

  • terrorism:视频暴恐涉政。

  • live:视频不良场景。

  • logo:视频logo。

  • ad:视频图文违规。

audioScenes

StringArray

["antispam"]

指定视频语音检测场景,唯一取值:antispam,表示语音反垃圾。

不传入该参数时仅检测视频图像内容;如果传入该参数,则在检测视频中图像的同时,对视频中语音进行检测。

说明

如果需要检测视频语音,则不支持通过上传视频截帧序列的方式(即在task中传入frames)进行检测,您必须传入视频或视频流的URL地址(即在task中传入url)进行检测。

callback

String

http://www.aliyundoc.com

检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。

callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照以下规则和格式设置checksumcontent,调用您的callback接口返回检测结果。

  • checksum:字符串格式,由用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。

    说明

    用户UID必须是阿里云账号的UID,而不是RAM用户的UID。

  • content:JSON字符串格式,请自行解析反转成JSON对象。关于content结果的示例,请参见查询检测结果的返回示例。

说明

您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。

seed

String

abc****

随机字符串,该值用于回调通知请求中的签名。

由英文字母、数字、下划线(_)组成,不超过64个字符。由您自定义,用于在接收到内容安全的回调通知时校验请求由阿里云内容安全服务发起。

说明

当使用callback时,该字段必须提供。

cryptType
String
SHA256
使用回调通知时(callback),设置对回调通知内容进行加密的算法。内容安全会将返回结果(由用户uid + seed + content拼接的字符串)按照您设置的加密算法加密后,再发送到您的回调通知地址。取值:
  • SHA256(默认):使用SHA256加密算法。
  • SM3:使用国密HMAC-SM3加密算法,返回十六进制的字符串,且字符串由小写字母和数字组成。

    例如,abc经国密SM3加密后返回66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0

tasks

JSONArray

指定检测对象,JSON数组中的每个元素是一个检测任务结构体。最多支持100个元素,即每次提交100条内容进行检测,支持100个元素的前提是需要将并发任务调整到100个以上。关于每个元素的具体结构描述,请参见task

表 1. task

名称

类型

是否必选

示例值

描述

clientInfo

JSONObject

{"userId":"12023****","userNick":"Mike","userType":"others"}

客户端信息,请参见公共参数中的公共查询参数。

服务器会把全局的clientInfo和此处独立的clientInfo合并。

说明

独立的clientInfo优先级更高。

dataId

String

videoId****

检测对象对应的数据ID。

由大小写英文字母、数字、下划线(_)、短划线(-)、英文句号(.)组成,不超过128个字符,可以用于唯一标识您的业务数据。

liveId

String

liveId****

视频直播流的ID。

该参数用于视频直播任务去重,防止重复检测,如果传递该参数,会根据uid+bizType+liveId判断是否存在检测中的直播任务。如果存在,就直接返回已存在的直播检测taskId,不发起新的任务。

url

String

http://www.aliyundoc.com/a.flv

检测对象的URL。

  • 公网HTTP/HTTPS URL,且长度不超过2048个字符。

  • 阿里云OSS提供的文件路径。您需要先授权内容安全访问OSS存储空间,仅限相同区域的OSS空间。更多信息,请参见授权内容安全访问OSS存储空间

    文件路径格式:oss://<bucket-name>.<endpoint>/<object-name>

说明

framesurl二选一。传入url字段后将按照传视频URL的方式计费。

frames

JSONArray

待检测视频的截帧信息。frames中的每个元素是个结构体,关于每个元素的具体结构描述,请参见frame

说明

framesurl二选一。传入url字段后将按照传视频URL的方式计费。

framePrefix

String

http://www.aliyundoc.com/video/

截帧地址的前缀,与frame.url一起组成截帧的完整地址。视频截帧的完整地址格式为framePrefix + frame.url

interval

Integer

1

视频截帧间隔,单位为秒,取值范围:1~600。默认值为1秒。

maxFrames

Integer

200

系统对本次检测的视频进行截帧的张数上限,取值范围:5~3600,默认为200张。如需调整到更大,请提交在线服务联系我们。

说明
  • 该字段仅在视频文件检测中生效(live=false)。如果是视频流检测(live=true),则该参数无效,视频流检测没有截帧数量上限。

  • 当使用OSS地址(以oss://开头)作为视频源地址,并且授权内容安全服务访问阿里云MTS服务后,最大可截取20,000张,该方式不会产生额外费用。关于授权内容安全访问阿里云MTS服务的方法,请参见授权访问MTS服务

表 2. frame

名称

类型

是否必选

示例值

描述

url

String

http://www.aliyundoc.com/0B860000586C0A0300038A0460000

视频截帧的URL,与framePrefix一起组成截帧的完整地址。视频截帧的完整地址格式为framePrefix + frame.url

offset

Integer

10

截帧距离片头的时间戳,单位为秒。

(异步检测)返回数据

名称

类型

示例值

描述

taskId

String

taskId****

检测任务的ID。

dataId

String

videoId****

检测对象对应的数据ID。

说明

如果在检测请求参数中传入了dataId,则此处返回对应的dataId

(异步检测)示例

请求示例

  • 传入视频截帧图片序列

    http(s)://[Endpoint]/green/video/asyncscan
    &<公共请求参数>
    {
        "scenes": [
            "porn"
        ],
        "tasks": [
            {
                "dataId": "videoId****",
                "frames": [
                    {
                        "offset": 10,
                        "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460000"
                    },
                    {
                        "offset": 20,
                        "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460001"
                    },
                    {
                        "offset": 30,
                        "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460002"
                    },
                    {
                        "offset": 40,
                        "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003"
                    },
                    {
                        "offset": 50,
                        "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003"
                    },
                    {
                        "offset": 60,
                        "url": "http://www.aliyundoc.com/0B860000586C0A0300038A046000x"
                    }
                ]
            }
        ]
    }
  • 传入普通视频文件

    http(s)://[Endpoint]/green/video/asyncscan
    &<公共请求参数>
    {
        "scenes": [
            "porn"
        ],
        "audioScenes": [
            "antispam"
        ],
        "tasks": [
            {
                "dataId": "videoId****",
                "url": "http://www.aliyundoc.com/a.mp4",
                "interval": 1,
                "maxFrames": 200
            }
        ]
    }
  • 传入视频直播流

    http(s)://[Endpoint]/green/video/asyncscan
    &<公共请求参数>
    {
        "scenes": [
            "porn"
        ],
        "live": true,
        "tasks": [
            {
                "dataId": "videoId****",
                "url": "http://www.aliyundoc.com/a.flv",
                "interval": 1,
                "maxFrames": 200
            }
        ]
    }

正常返回示例

{
    "code": 200,
    "msg": "OK",
    "requestId": "requestID****",
    "data": [
        {
            "dataId": "videoId****",
            "taskId": "taskId****"
        }
    ]
}

(视频异步检测结果查询)使用说明

业务接口:/green/video/results,表示查询视频异步检测结果。

您可以调用该接口查询视频异步检测任务的结果。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

    该接口不计费。

  • 查询超时

    建议您将查询间隔设置为30秒(即在提交异步检测任务30秒后查询结果),最长不能超出4个小时,否则结果将会丢失。

QPS限制

本接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。

(结果查询)请求参数

名称

类型

是否必选

示例值

描述

body

JSONArray

["taskId****","taskId****"]

要查询的检测任务的taskId列表。数组中的元素个数不超过100个。

您在提交检测任务后,可以从返回数据中获取检测任务的taskId

(结果查询)返回数据

名称

类型

示例值

描述

code

Integer

200

错误码,和HTTP状态码一致。

更多信息,请参见公共错误码

msg

String

OK

请求信息的响应信息。

dataId

String

videoId****

检测对象对应的数据ID。

说明

如果在检测请求参数中传入了dataId,则此处返回对应的dataId

taskId

String

taskId****

检测任务的ID。

results

JSONArray

返回结果,调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述,请参见result

说明

视频流检测场景中,code返回280表示在检测中,返回200表示检测完成。在检测中状态时,检测结果中包含从开始检测到当前时间检测到的结果。

audioScanResults

JSONArray

视频语音检测结果。具体结构描述,请参见audioScanResult

表 3. result

名称

类型

示例值

描述

scene

String

porn

视频检测场景,和调用请求中的场景对应。取值:

  • porn:视频智能鉴黄。

  • terrorism:视频暴恐涉政。

  • live:视频不良场景。

  • logo:视频logo。

  • ad:视频图文违规。

label

String

porn

视频检测结果的分类。不同检测场景的结果分类不同,具体如下:

  • 视频智能鉴黄(porn)结果分类:

    • normal:正常

    • porn:色情

  • 视频暴恐涉政(terrorism)结果分类:

    • normal:正常

    • terrorism:暴恐涉政

  • 视频不良场景(live)结果分类:

    • normal:正常

    • live:包含不良场景

  • 视频logo(logo)结果分类:

    • normal:正常

    • logo:包含logo

  • 视频图文违规(ad)结果分类:

    • normal:正常

    • ad:包含广告或文字违规信息

sublabel

String

porn

如果检测场景包含智能鉴黄(porn)和暴恐涉政(terrorism),则该字段可以返回检测结果的细分类标签。

该字段默认不会返回。如果有需要,请加入钉群(钉群号:35573806),联系产品技术专家进行咨询。

suggestion

String

block

建议您执行的后续操作。取值:

  • pass:结果正常,无需进行其余操作。

  • review:结果不确定,需要进行人工审核。

  • block:结果违规,建议直接删除或者限制公开。

rate

Float

99.2

置信度分数,取值范围:0(表示置信度最低)~100(表示置信度最高)。

如果suggestionpass,则置信度越高,表示内容正常的可能性越高;如果suggestionreviewblock,则置信度越高,表示内容违规的可能性越高。

重要

建议您参考suggestionlabel(或者部分接口返回的sublabel)结果用于内容违规判定。

frames

JSONArray

包含违规内容的视频截帧的信息。具体结构描述,请参见frame

hintWordsInfo

JSONArray

视频中含有广告或文字违规信息时,返回视频中广告文字命中的风险关键词信息。具体结构描述,请参见hintWordsInfo

说明

只有图文违规(ad)场景会返回该结果。

logoData

JSONArray

视频中含有logo时,返回识别出来的logo信息,具体结构描述,请参见logoData

说明

只有视频logo(logo)场景会返回该结果。

sfaceData

JSONArray

视频中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述,请参见sfaceData

说明

只有视频暴恐涉政(terrorism)场景会返回该结果。

表 4. frame

名称

类型

示例值

描述

url

String

http://www.aliyundoc.com/0B860000586C0A0

视频截帧的地址。

说明

若开启了视频证据转存,则返回转存的视频截帧的OSS URL链接。更多信息,请参见检测结果

offset

Integer

50

视频截帧距离片头的时间戳,单位:秒。

label

String

porn

视频截帧的检测结果分类。不同检测场景的结果分类不同,具体如下:

  • 视频智能鉴黄(porn)截帧结果分类:

    • normal:正常

    • sexy:性感

    • porn:色情

  • 视频暴恐涉政(terrorism)截帧结果分类:

    • normal:正常

    • bloody:血腥

    • explosion:爆炸烟光

    • outfit:特殊装束

    • logo:特殊标识

    • weapon:武器

    • politics:涉政

    • violence:打斗

    • crowd:聚众

    • parade:游行

    • carcrash:车祸现场

    • flag:旗帜

    • location:地标

    • drug:涉毒

    • gamble:赌博

    • others:其他

  • 视频图文违规(ad)截帧结果分类:

    • normal:正常

    • politics:文字含涉政内容

    • porn:文字含涉黄内容

    • abuse:文字含辱骂内容

    • terrorism:文字含暴恐内容

    • contraband:文字含违禁内容

    • spam:文字含其他垃圾内容

    • npx:牛皮癣广告

    • qrcode:包含二维码

    • programCode:包含小程序码

    • ad:其他广告

  • 视频不良场景(live)截帧结果分类:

    • normal:正常

    • meaningless:无意义(例如黑屏、白屏)

    • PIP:画中画

    • smoking:吸烟

    • drivelive:车内直播

    • drug:涉毒

    • gamble:赌博

  • 视频logo(logo)截帧结果分类:

    • normal:正常

    • TV:包含受管控的logo

    • trademark:包含商标

rate

Float

99.1

置信度分数,取值范围:0~100,置信度越高表示检测结果的可信度越高。建议您不要在业务中使用该分数。

表 5. audioScanResult

名称

类型

示例值

描述

scene

String

antispam

视频语音检测场景,唯一取值:antispam,表示语音反垃圾。

label

String

customized

视频语音的检测结果分类。不同检测场景的结果分类不同,具体如下:

  • normal:正常

  • spam:包含垃圾信息

  • ad:广告

  • politics:涉政

  • terrorism:暴恐

  • abuse:辱骂

  • porn:色情

  • flood:灌水

  • contraband:违禁

  • customized:自定义(例如命中自定义关键词)

suggestion

String

block

建议您执行的后续操作。取值:

  • pass:结果正常,无需进行其余操作。

  • review:结果不确定,需要进行人工审核。

  • block:结果违规,建议直接删除或者限制公开。

rate

Float

99.91

置信度分数,取值范围:0(表示置信度最低)~100(表示置信度最高)。

如果suggestionpass,则置信度越高,表示内容正常的可能性越高;如果suggestionreviewblock,则置信度越高,表示内容违规的可能性越高。

重要

建议您参考suggestionlabel(或者部分接口返回的sublabel)结果用于内容违规判定。

details

JSONArray

语音对应的文本详情(每一句文本对应一个元素),包含一个或者多个元素,具体结构描述,请参见detail

表 6. detail

名称

类型

示例值

描述

startTime

Integer

24

句子开始的时间,单位为秒。

endTime

Integer

60

句子结束的时间,单位为秒。

text

String

计算机

语音转换成文本的结果。

label

String

normal

该句语音的检测结果分类。取值:

  • normal:正常

  • spam:包含垃圾信息

  • ad:广告

  • politics:涉政

  • terrorism:暴恐

  • abuse:辱骂

  • porn:色情

  • flood:灌水

  • contraband:违禁

  • customized:自定义(例如命中自定义关键词)

keyword

String

开启

如果命中了用户自定义关键词,返回命中的关键词。

libName

String

人工

如果命中了用户自定义关键词,返回关键词所在词库。

表 7. logoData

名称

类型

示例值

描述

type

String

TV

识别出的logo类型,取值为TV (台标)。

name

String

***台

识别出的logo名称。

x

Float

140

以图片左上角为坐标原点,logo区域左上角到y轴距离,单位:像素。

y

Float

68

以图片左上角为坐标原点,logo区域左上角到x轴距离,单位:像素。

w

Float

106

logo区域宽度,单位:像素。

h

Float

106

logo区域高度,单位:像素。

表 5. sfaceData
名称类型示例值描述
xFloat444以图片左上角为坐标原点,人脸区域左上角到y轴距离。
yFloat174以图片左上角为坐标原点,人脸区域左上角到x轴距离。
wFloat467人脸区域宽度。
hFloat467人脸区域高度。
smileRateFloat0微笑的概率。
glassesBooleanfalse是否戴眼镜。
facesArray识别出的人脸信息。关于具体结构描述,请参见下表face。
表 8. face

名称

类型

示例值

描述

name

String

xxxx

相似人物的名称。

rate

Float

97.03

相似概率。

id

String

AliFace_001****

人脸ID。

表 9. hitLibInfo

名称

类型

示例值

描述

context

String

xxxx

文字命中的自定义文本内容。

libCode

String

69751

文字命中的自定义文本内容对应的库code。

libName

String

人工

文字命中的自定义文本内容对应的库名称。

表 10. hintWordsInfo

名称

类型

示例值

描述

context

String

xxxx

文字命中的风险关键词内容。

(结果查询)示例

请求示例

http(s)://[Endpoint]/green/video/results
&<公共请求参数>
[
    "taskId****",
    "taskId****"
]

正常返回示例

  • 仅检测视频图画

    {
        "code": 200,
        "msg": "OK",
        "requestId": "requestID****",
        "data": [
            {
                "code": 200,
                "msg": "OK",
                "dataId": "videoId****",
                "taskId": "taskId****",
                "results": [
                    {
                        "label": "porn",
                        "rate": 99.2,
                        "scene": "porn",
                        "suggestion": "block"
                    }
                ]
            }
        ]
    }
  • 同时检测视频图画和视频语音

    {
        "code": 200,
        "msg": "OK",
        "requestId": "requestID****",
        "data": [
            {
                "code": 200,
                "msg": "OK",
                "dataId": "videoId****",
                "taskId": "taskId****",
                "results": [
                    {
                        "label": "porn",
                        "rate": 99.2,
                        "scene": "porn",
                        "suggestion": "block"
                    }
                ],
                "audioScanResults": [
                    {
                        "scene": "antispam",
                        "label": "customized",
                        "suggestion": "block",
                        "rate": 99.91,
                        "details": [
                            {
                                "startTime": 0,
                                "endTime": 24,
                                "text": "计算机",
                                "label": "customized"
                            },
                            {
                                "startTime": 24,
                                "endTime": 60,
                                "text": "计算机",
                                "label": "normal"
                            }
                        ]
                    }
                ]
            }
        ]
    }