视频文件审核增强版API

视频文件审核增强版帮助您检测视频文件中的风险或违规内容。本文介绍了使用API接口进行视频文件审核增强版的方法。

接入指引

  1. 注册阿里云账号:立即注册,按照操作提示完成账号注册。

  2. 开通内容安全按量付费:请确保已开通服务,具体操作,请参见开通服务。开通不收费,接口接入使用后系统会按使用量自动出账,具体信息,请参见计费说明您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯抵扣,适合使用量级可预期和较大的用户,具体信息,请参见购买按量抵扣资源包

  3. 创建AccessKey:请确保您已通过RAM创建AccessKey,具体操作,请参见创建AccessKey。如果您使用的是RAM用户(子账号)AccessKey,您需要通过阿里云账号(主账号)给RAM用户赋予AliyunYundunGreenWebFullAccess权限,具体操作,请参见RAM授权

  4. 开发接入:推荐使用SDK方式调用。具体信息,请参见视频审核增强版接入指南

  5. 视频文件审核服务包含以下2个接口:

    • VideoModeration:提交视频文件审核任务

    • VideoModerationResult:获取视频文件审核结果

提交审核任务

接口说明

  • 业务接口:VideoModeration,视频仅提供异步检测接口。

  • 支持的地域及接入地址:

    地域

    外网接入地址

    内网接入地址

    支持的服务

    华东2(上海)

    green-cip.cn-shanghai.aliyuncs.com

    green-cip-vpc.cn-shanghai.aliyuncs.com

    videoDetection

    华北2(北京)

    green-cip.cn-beijing.aliyuncs.com

    green-cip-vpc.cn-beijing.aliyuncs.com

    华东1(杭州)

    green-cip.cn-hangzhou.aliyuncs.com

    green-cip-vpc.cn-hangzhou.aliyuncs.com

    华南1(深圳)

    https://green-cip.cn-shenzhen.aliyuncs.com

    暂无

    新加坡

    green-cip.ap-southeast-1.aliyuncs.com

    green-cip-vpc.ap-southeast-1.aliyuncs.com

    videoDetection_cb

  • 计费信息

    该接口为收费接口。会根据您设置的视频画面检测策略和视频语音检测策略进行计费,视频画面可选择多个服务(service),将按照画面截帧数量x每个服务的单价进行累加计费。如果同时检测视频中的语音内容违规,则还将增加视频时长x语音违规功能的单价的费用。关于计费方式,请参见计费说明

  • 检测对象:支持检测视频文件。

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

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

    • 轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果。

  • 视频要求

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

    • 视频文件支持以下格式:AVI、FLV、MP4、MPG、ASF、WMV、MOV、WMA、RMVB、RM、FLASH、TS。

    • 视频大小限制:默认单个视频大小不超过500 MB。如果您的需求超过500 MB,您可以对视频进行分片处理。或者联系工作人员帮您调整大小限制。

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

  • 检测规则配置:

    • 初次调用时请在内容安全控制台进行视频审核规则设置。

    • 如果您不设置,视频审核增强版API的默认配置如下:

      视频文件检测(videoDetection)

      视频文件检测_海外版(videoDetection_cb)

      • 固定频率截帧:1秒/帧

      • 视频画面检测服务:视频/直播截图检测(liveStreamCheck)

      • 视频语音检测:开启

      • 视频语音检测服务:音视频媒体检测(audio_media_detection)

      • 结果返回方式:仅返回有检出风险的结果

      • 固定频率截帧:1秒/帧

      • 视频画面检测服务:通用基线检测_海外版(baselineCheck_cb)

      • 视频语音检测:开启

      • 视频语音检测服务:音视频媒体检测_海外版(audio_media_detection_cb)

      • 结果返回方式:仅返回有检出风险的结果

QPS限制

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

调试

在接入前,您也可以通过阿里云OpenAPI在线调试VideoModeration接口,查看调用示例代码及SDK依赖信息,方便概览接口的使用方法和参数。

重要

在线调试能力是基于当前登录账号调用内容安全的API接口,因此调用量会计入账号的收费用量中。

请求参数

名称

类型

是否必须

示例值

描述

Service

String

videoDetection

审核服务类型。如下:

  • videoDetection:即视频文件检测

  • videoDetection_cb:视频文件检测_海外版

ServiceParameters

JSONString

审核服务需要的参数集。JSON字符串格式,关于每个字符串的描述,请参见表1 ServiceParameters

表1 ServiceParameters

名称

类型

是否必选

示例值

描述

url

String

是。视频审核增强版支持两种方式传入视频,请您选择其中一种:

  • 使用视频URL方式进行检测,传入url。

  • 使用OSS授权进行检测,必须同时传入ossBucketName、ossObjectName、ossRegionId。

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

待检测对象的URL,请确保该URL能通过公网访问到,或传入同区域的OSS内网地址。

说明

URL地址中不能包含中文,长度不超过2048个字符,且一次请求请确保仅传入1条URL。

ossBucketName

String

bucket_01

已授权OSS空间的Bucket名。

说明

使用OSS视频内网地址时必须先使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

ossObjectName

String

20240307/07/28/test.flv

已授权OSS空间的文件名。

ossRegionId

String

cn-shanghai

OSS Bucket所在区域。

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。

dataId

String

videoId****

检测对象对应的数据ID。

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

offline

String

false

是否近线检测模式。

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

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

重要

该字段为String类型。近线模式支持北京、上海、杭州区域。

说明

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

返回数据

名称

类型

示例值

描述

Code

Integer

200

状态码。更多信息,请参见Code 说明

Data

JSONObject

审核结果数据。

TaskId

String

AAAAA-BBBBB

检测的任务ID。

DataId

String

dataId0307

数据ID。

Message

String

OK

请求消息的响应消息。

RequestId

String

ABCD1234-1234-1234-1234-123****

请求ID。

示例

请求示例

{
    "Service": "videoDetection",
    "ServiceParameters": {
        "url": "http://www.aliyundoc.com/a.flv",
        "dataId": "videoId****"
    }
}

正常返回示例

{
    "Message": "OK",
    "Code": 200,
    "Data": {
        "TaskId": "AAAAA-BBBBB",
        "DataId": "videoId****"
    },
    "RequestId": "ABCD1234-1234-1234-1234-123****"
}

获取视频文件审核任务结果

接口说明

  • 业务接口:VideoModerationResult,表示获取视频文件审核任务结果。

  • 计费信息:该接口不计费。

  • 查询超时:建议您将查询间隔设置为30秒(即在提交异步检测任务30秒后查询结果),最长不能超出24小时,否则结果将会自动删除。

QPS限制

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

调试

在接入前,您也可以通过阿里云OpenAPI在线调试VideoModerationResult接口,查看调用示例代码及SDK依赖信息,方便概览接口的使用方法和参数。

请求参数

名称

类型

是否必选

示例值

描述

Service

String

videoDetection

审核服务类型,需要和提交审核任务的审核服务类型保持一致。

ServiceParameters

JSONString

审核服务需要的参数集。JSON字符串格式,关于每个字符串的描述,请参见表1 ServiceParameters

表1 ServiceParameters

名称

类型

是否必选

示例值

描述

taskId

string

abcd****

要查询的检测任务的taskId,每次支持输入一个taskId

说明

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

返回数据

名称

类型

示例值

描述

RequestId

String

ABCD1234-1234-1234-1234-123****

本次调用请求的ID,是由阿里云为该请求生成的唯一标识符,可用于排查和定位问题。

Data

Object

视频内容检测结果。更多信息,请参见表2 Data

Code

String

200

状态码。更多信息,请参见Code 说明

Message

String

OK

本次请求的响应消息。

表2 Data

名称

类型

示例值

描述

DataId

String

videoId****

检测对象对应的数据ID。

说明

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

TaskId

String

AAAAA-BBBBB-2024*-0307*

检测的任务ID。

RiskLevel

String

high

视频的风险等级,根据视频画面和视频音频综合判断,返回值包括:

  • high:高风险

  • medium:中风险

  • low:低风险

  • none:未检测到风险

说明

高风险内容建议直接处置;中风险内容建议人工复查;低风险内容建议在高召回需求时再做处理,日常建议和未检测到风险做相同处理。视频画面风险分值可以在内容安全控制台配置。

FrameResult

JSONObject

视频画面检测结果,调用成功时(code=200),返回结果中包含一个结构体,具体结构,请参见表3 FrameResult

说明

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

AudioResult

JSONObject

视频语音检测结果。返回结果中包含一个结构体,关于结构体的描述,请参见表8 audioResult

表3 FrameResult

名称

类型

示例值

描述

FrameNum

Integer

200

视频返回截帧数。

FrameSummarys

JSONArray

视频截帧标签汇总。具体结构描述,请参见表表4 FrameSummary

RiskLevel

String

high

视频画面风险等级,根据所有视频截帧计算返回,返回值包括:

  • high:高风险

  • medium:中风险

  • low:低风险

  • none:未检测到风险

Frames

JSONArray

包含命中标签的视频截帧的信息。具体结构描述,请参见表5 Frame

表4 FrameSummary

名称

类型

示例值

描述

Label

String

violent_armedForces

视频截帧标签。

Description

String

疑似含有烟火类内容元素

对Labal字段的说明。

重要

该字段为Label字段的解释说明,可能会变更调整,建议根据Label字段进行处置,不要基于该字段进行结果处置。

LabelSum

Integer

8

标签出现次数。

表5 Frame

名称

类型

示例值

描述

TempUrl

String

http://www.aliyundoc.com/test.jpg

视频截帧的临时地址。30分钟有效。

说明

若开启了视频证据转存,则返回转存的视频截帧的OSS URL链接。

Offset

Float

50.5

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

RiskLevel

String

high

视频截帧风险等级,根据设置的高低风险分返回,返回值包括:

  • high:高风险

  • medium:中风险

  • low:低风险

  • none:未检测到风险

说明

高风险内容建议直接处置;中风险内容建议人工复查;低风险内容建议在高召回需求时再做处理,日常建议和未检测到风险做相同处理。视频截帧风险分值可以在内容安全控制台规则配置中配置。

Results

JSONArray

视频截帧检测的风险标签、置信分等参数结果。更多信息,请参见表6 Results

表6 Results

名称

类型

示例值

描述

Service

String

liveSteamCheck

调用的视频画面服务(service)。

Result

Array

视频截帧检测的风险标签、置信分等参数结果。更多信息,请参见表7 Result

表7 Result

名称

类型

示例值

描述

Label

String

violent_explosion

视频截帧检测运算后返回的标签。同一张截帧可能会检出多个标签和分值。支持的标签如下:

Confidence

Float

81.22

置信分值,0到100分,保留到小数点后2位。

Description

String

疑似含有烟火类内容元素

对Labal字段的说明。

重要

该字段为Label字段的解释说明,可能会变更调整,建议根据Label字段进行处置,不要基于该字段进行结果处置。

表8 audioResult

名称

类型

示例值

描述

AudioSummarys

JSONArray

语音标签汇总。具体结构描述,请参见表9 AudioSummarys

RiskLevel

String

high

视频音频风险等级,根据所有音频切片计算返回,返回值包括:

  • high:高风险

  • medium:中风险

  • low:低风险

  • none:未检测到风险

SliceDetails

JSONArray

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

表9 AudioSummarys

名称

类型

示例值

描述

Label

String

profanity

视频语音标签。

LabelSum

Integer

8

标签出现次数。

表10 SliceDetails

名称

类型

示例值

描述

StartTime

Integer

0

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

EndTime

Integer

4065

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

StartTimestamp

Integer

1678854649720

切片开始时间戳,单位:毫秒。

EndTimestamp

Integer

1678854649720

切片结束时间戳,单位:毫秒。

Text

String

恶心的

语音转换成文本内容。

Url

String

https://aliyundoc.com/test.wav

如果检测的内容是语音流,表示该段文本对应的语音流的临时访问地址。该地址有效时间为30分钟,需要及时转存。

Labels

String

political_content,xxxx

标签详情,多个标签以逗号分隔。包含:

  • ad:广告引流

  • violence:暴恐内容

  • political_content:涉政内容

  • specified_speaking:特定声音

  • specified_lyrics:特定歌曲

  • sexual_content:色情内容

  • sexual_sounds:呻吟声音

  • contraband:违禁内容

  • profanity:辱骂内容

  • religion:宗教内容

  • cyberbullying:网络暴力

  • negative_content:不良内容

  • nontalk:静音音频

  • C_customized:用户库命中

RiskLevel

String

high

视频音频切片风险等级,返回值包括:

  • high:高风险

  • medium:中风险

  • low:低风险

  • none:未检测到风险

RiskWords

String

AAA,BBB,CCC

命中风险词,多个词以逗号分隔。

RiskTips

String

色情_低俗词,色情_描述

细分标签,多个标签以逗号分隔。

Extend

String

{"riskTips":"色情_低俗词","riskWords":"色情服务"}

保留字段。

示例

请求示例

{
    "Service": "videoDetection",
    "ServiceParameters": {
        "taskId": "abcd****"
    }
}

正常返回示例

  • 仅检测视频图画

{
    "Code": 200,
    "RequestId": "25106421-XXXX-XXXX-XXXX-15DA5AAAC546",
    "Message": "success finished",
    "Data": {
        "DataId": "ABCDEF-TESTDATAID",
        "TaskId": "AAAAA-BBBBB-2024-0307-0728",
        "RiskLevel": "medium",
        "FrameResult": {
            "FrameNum": 2,
            "FrameSummarys": [
                {
                    "Label": "violent_explosion",
                    "Description": "疑似含有烟火类内容元素",
                    "LabelSum": 8
                },
                {
                    "Label": "sexual_cleavage",
                    "Description": "疑似含有包含肢体裸露或性感内容",
                    "LabelSum": 8
                }
            ],
            "RiskLevel": "medium",
            "Frames": [
                {
                    "Offset": 1,
                    "RiskLevel": "none",
                    "Results": [
                        {
                            "Result": [
                                {
                                    "Label": "nonLabel",
                                    "Description": "未检测出风险"
                                }
                            ],
                            "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": "疑似含有烟火类内容元素"
                                }
                            ],
                            "Service": "baselineCheck"
                        },
                        {
                            "Result": [
                                {
                                    "Confidence": 1,
                                    "Label": "sexual_cleavage",
                                    "Description": "疑似含有包含肢体裸露或性感内容"
                                }
                            ],
                            "Service": "baselineCheck_pro"
                        }
                    ],
                    "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test2.jpg"
                }
            ]
        }
    }
}

  • 同时检测视频图画和视频语音

{
    "Code": 200,
    "RequestId": "ABCEDF-XXXX-XXXX-XXXX-202403070728520",
    "Message": "success finished",
    "Data": {
        "DataId": "ABCDEF-TESTDATAID",
        "TaskId": "AAAAA-BBBBB-2024-0307-0728",
        "RiskLevel": "medium",
        "AudioResult": {
            "AudioSummarys": [
                {
                    "Label": "sexual_sounds",
                    "LabelSum": 3
                }
            ],
            "RiskLevel": "medium",
            "SliceDetails": [
                {
                    "EndTime": 60,
                    "EndTimestamp": 1698912813192,
                    "Labels": "",
                    "RiskLevel": "none",
                    "StartTime": 30,
                    "StartTimestamp": 1698912783192,
                    "Text": "内容安全",
                    "Url": "http://abc.oss-cn-shanghai.aliyuncs.com/test.wav"
                },
                {
                    "EndTime": 30,
                    "EndTimestamp": 1698912813192,
                    "Extend": "{\"customizedWords\":\"服务\",\"customizedLibs\":\"test\"}",
                    "Labels": "C_customized",
                    "RiskLevel": "high",
                    "StartTime": 0,
                    "StartTimestamp": 1698912783192,
                    "Text": "欢迎使用阿里云内容安全服务",
                    "Url": "http://abc.oss-cn-shanghai.aliyuncs.com/test.wav"
                }
            ]
        },
        "FrameResult": {
            "FrameNum": 2,
            "FrameSummarys": [
                {
                    "Label": "violent_explosion",
                    "Description": "疑似含有烟火类内容元素",
                    "LabelSum": 8
                },
                {
                    "Label": "sexual_cleavage",
                    "Description": "疑似含有包含肢体裸露或性感内容",
                    "LabelSum": 8
                }
            ],
            "RiskLevel": "medium",
            "Frames": [
                {
                    "Offset": 1,
                    "RiskLevel": "none",
                    "Results": [
                        {
                            "Result": [
                                {
                                    "Label": "nonLabel",
                                    "Description": "未检测出风险"
                                }
                            ],
                            "Service": "baselineCheck"
                        }
                    ],
                    "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test1.jpg"
                },
                {
                    "Offset": 2,
                    "RiskLevel": "none",
                    "Results": [
                        {
                            "Result": [
                                {
                                    "Confidence": 1,
                                    "Label": "sexual_cleavage",
                                    "Description": "疑似含有包含肢体裸露或性感内容"
                                },
                                {
                                    "Confidence": 74.1,
                                    "Label": "violent_explosion",
                                    "Description": "疑似含有烟火类内容元素"
                                }
                            ],
                            "Service": "baselineCheck"
                        }
                    ],
                    "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test2.jpg"
                }
            ]
        }
    }
}

Code说明

以下为视频文件审核增强版接口返回Code的含义说明,系统仅对Code返回为200和280的请求计量计费,其他Code不会计费。

Code

说明

200

请求正常或者检测完成。

280

检测中。

288

近线模式排队等待中。

400

请求参数为空。

401

请求参数错误。

402

请求参数长度不符合接口规定,请检查并修改。

403

请求超过QPS限制,请检查并调整并发。

404

传入的视频下载遇到错误,请检查或重试。

405

传入的视频下载超时,可能是因为视频无法访问,请检查调整后重试。

406

传入的视频过大,请检查调整视频大小后再重试。

407

传入的视频格式暂不支持,请检查调整后重试。

408

该账号无权限调用该接口,可能是账号未开通或者已欠费,或者调用账号未被授权访问。

409

传入的TaskId不存在,可能是结果已经超过24小时有效期。

480

检测并发路数超过限制,请检查并调整并发。

500

系统异常。