本文提供了调用视频异步检测任务进行视频审核的具体接口和参数说明,旨在帮助您编写程序构建HTTP调用请求。

  • 关于如何构造HTTP请求,请参见请求结构
  • 您也可以直接选用已构造好的HTTP请求,具体请参见SDK参考

提交视频异步检测任务

描述

业务接口:/green/video/asyncscan

异步检测视频文件或视频流中是否包含违规内容。

支持检测的场景包括:视频智能鉴黄、视频暴恐涉政识别、视频图文违规识别、视频不良场景识别、视频logo识别、视频语音违规内容识别。
说明 该接口为收费接口。同时检测多个场景的情况下,将按照“每个场景的检测视频截帧数量×每个场景的单价”进行累加计费。如果您同时检测视频中的语音违规内容,则还将增加“视频时长×语音违规功能的单价”的费用,具体请参见计费说明。

异步检测结果需要通过调用查询视频审核检测结果接口进行查询或者通过callback的方式进行接收,检测结果最多保留4个小时。

关于scene与label参数

在提交检测任务时,您需要指定scenes场景参数;而在检测返回结果中,则包含您指定的场景对应的label结果分类参数。

在视频审核中,scene与label的对应关系如下:
场景 描述 scenes label
视频智能鉴黄 识别短视频是否为色情视频。 porn
  • normal:正常视频
  • porn:色情视频
视频暴恐涉政识别 识别短视频是否为暴恐涉政视频。 terrorism
  • normal:正常视频
  • terrorism:暴恐涉政视频
视频不良场景识别 识别短视频中的不良场景。 live
  • normal:正常视频
  • live:包含不良场景的视频
视频logo识别 识别短视频中的特定logo。 logo
  • normal:正常视频
  • logo:带有logo的视频
视频图文违规识别 识别视频画面中包含的广告或者文字违规内容。 ad
  • normal:正常视频
  • ad:包含广告的视频

关于audioScenes与label参数

在提交检测任务时且通过视频URL方式传入视频时,可以同时对视频中的语音内容进行违规检测。您需要指定audioScenes语音检测场景参数;而在检测返回结果中,则包含您指定的场景对应的label结果分类参数。

在视频语音检测中,audioScenes与label的对应关系如下:
场景 描述 scenes label
视频中语音内容反垃圾 识别视频中的语音内容是否包含违规信息。
说明 默认识别语言为中文。如果您需要识别英文内容,请提交工单联系阿里云技术支持人员。
antispam
  • normal:正常文本
  • spam:含垃圾信息
  • ad:广告
  • politics:涉政
  • terrorism:暴恐
  • abuse:辱骂
  • porn:色情
  • flood:灌水
  • contraband:违禁
  • customized:自定义(比如命中自定义关键词)
关于视频文件的限制
  • 视频文件链接支持以下协议:HTTP和HTTPS。
  • 视频文件支持以下格式:.avi、.flv、.mp4、.mpg、.asf、.wmv、.mov、.wma、.rmvb、.rm、.flash、.mid。
  • 视频大小限制:单个视频大小不超过200MB。如您有特殊需求(大视频),可以提工单进行调整。
  • 视频流支持以下协议:.rtmp、.hls、.http-flv。
  • 视频流时长限制:单个视频流检测任务最长支持24小时,超过24小时任务自动结束。
  • 视频检测的时间依赖于视频的下载时间。请保证被检测的视频文件所在的存储服务稳定可靠,建议您使用阿里云OSS存储服务存储视频文件。

请求参数

关于在请求中必须包含的公共请求参数,请参见公共参数

请求body是一个JSON对象,字段说明如下:

名称 类型 是否必需 描述
bizType 字符串 该字段用于标识业务场景。针对不同的业务场景,您可以配置不同的内容审核策略,以满足不同场景下不同的审核标准或算法策略的需求。您可以通过云盾内容安全控制台创建业务场景(bizType),或者通过工单联系我们帮助您创建业务场景。
live 布尔型 是否直播。默认为false,表示为普通视频检测;若为直播检测,该值必须传入true
scenes 字符串数组 指定视频检测的应用场景,可选值包括:
  • porn:视频智能鉴黄
  • terrorism:视频暴恐涉政识别
  • ad:视频图文违规识别
  • live:视频不良场景识别
  • logo:视频logo识别
audioScenes 字符串数组 选择一个或多个语音检测场景,在检测视频中图像的同时,对视频中语音进行检测。可选值:antispam(语音反垃圾)。
说明 语音检测仅支持通过url(task中传入url)传入待检测视频。使用截帧方式(task中传入frames)传入视频不支持语音检测。
callback 字符串 异步检测结果回调通知您的URL,支持HTTP/HTTPS。当该字段为空时,您必须定时检索检测结果。
seed 字符串 该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。
tasks JSON数组 JSON数组中的每个元素是一个结构体(Video表)。每个元素的具体结构描述见task
表 1. task
名称 类型 是否必需 描述
clientInfo JSON结构体 客户端信息,参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId 字符串 数据Id。需要保证在一次请求中所有的Id不重复。
url 字符串 视频地址,不能和frames同时为空,也不能和frames同时有值。
说明 传入本字段时按照传URL方式计费。
frames JSON数组 截帧信息。frames中的每个元素是个结构体(Frame表),每个元素的具体结构描述见frame
说明 传入本字段时按照传图片序列的方式计费。
framePrefix 字符串 frames存在时,截帧的完整URL为:framePrefix + frame.url
interval 整型 视频截帧间隔,单位为秒,取值范围为[1, 60]。默认值为1秒。
maxFrames 整型 系统对本次检测的视频进行截帧的张数上限,取值范围为[5,3600],默认为200张。如需调整到更大,请通过工单联系我们。
说明 当使用OSS地址(以oss://开头)作为视频源地址,并且授权内容安全服务访问阿里云MTS服务后,最大可截取20,000张,该方式不会产生额外费用。关于授权内容安全访问阿里云MTS服务的方法,请参见授权访问MTS服务
表 2. frame
名称 类型 是否必需 描述
url 字符串 截帧地址。当framePrefix存在时,完整的截帧地址为:framePrefix + url
offset 整型 该截帧距离片头的时间戳,单位为秒。

结果回调通知参数(callback、seed)

使用说明

如果您在请求参数中指定了回调通知参数callback、被回调callback值,即一个http(s)协议接口的URL,则需要支持POST方法,传输数据编码采用utf-8,并且支持两个表单参数checksumcontent。系统将按以下描述的生成规则和格式设置checksum和content的值,调用您的callback接口返回检测内容。

您服务端接收到我们推送的结果后,返回的HTTP状态码为200时,表示推送成功,其他的HTTP状态码均视为您接收失败,我们将最多重复推送16次。

回调结果参数的生成规则
名称 类型 描述
checksum String 用户uid + seed + content拼成字符串,通过SHA256算法生产。用户UID即账号ID,您可在阿里云控制台上查询。为防篡改,您可以在获取到推送结果时,按此算法生成字符串,与checksum做一次校验。
content String JSON字符串格式,请自行解析反转成JSON对象。content结果格式参见下文。
content结果格式
{
      "code":200,
      "msg":"OK",
      "dataId":"videoId xxx",
      "taskId":"taskId xxx",
      "results":[
        {
          "label":"porn",
          "rate":99.2,
          "scene":"porn",
          "suggestion":"block"
        }
      ]
}

返回参数

返回结果说明,参见返回结果

返回body中的Data字段是JSON数组,每一个元素包含如下字段:

名称 类型 是否必需 描述
taskId 字符串 该检测任务的ID。
dataId 字符串 对应请求的dataId

示例

请求示例
  • 视频截帧图片序列检测
    {
    "scenes":["porn"],
    "tasks":[
      {
        "dataId":"videoId xxx",
        "frames":[
          {
            "offset":10,
            "url":"http://g1.ykimg.com/0B860000586C0A0300038A0460000"
          },
          {
            "offset":20,
            "url":"http://g1.ykimg.com/0B860000586C0A0300038A0460001"
          },
          {
            "offset":30,
            "url":"http://g1.ykimg.com/0B860000586C0A0300038A0460002"
          },
          {
            "offset":40,
            "url":"http://g1.ykimg.com/0B860000586C0A0300038A0460003"
          },
          {
            "offset":50,
            "url":"http://g1.ykimg.com/0B860000586C0A0300038A0460003"
          },
          {
            "offset":60,
            "url":"http://g1.ykimg.com/0B860000586C0A0300038A046000x"
          }
        ]
      }
    ]
    }
  • 普通视频文件检测
    {
      "scenes":["porn"],
      "audioScenes":["antispam"],
      "tasks":[
        {
          "dataId":"videoId xxx",
          "url":"http://www.foo.bak/a.mp4",
          "interval":1,
          "maxFrames":200
        }
      ]
    }
  • 视频直播流检测
    {
      "scenes":["porn"],
      "live":true,
      "tasks":[
        {
          "dataId":"videoId xxx",
          "url":"http://www.foo.bak/a.flv",
          "interval":1,
          "maxFrames":200
        }
      ]
    }
返回示例
{
  "code":200,
  "msg":"OK",
  "requestId":"requestID xxx",
  "data":[
    {
      "dataId":"videoId xxx",
      "taskId":"taskId xxx"
    }
  ]
}

查询视频异步检测结果

描述

业务接口/green/video/results

查询异步检测的结果。建议您将查询间隔设置为30秒,最长不能超过4个小时,否则结果将会消失。
说明 本接口为免费接口。

请求参数

关于在请求中必须包含的公共请求参数,请参见公共参数

请求body是一个JSON数组,字段说明如下:
名称 类型 是否必需 描述
body JSON数组 要查询的taskId列表。最大长度不超过100。

返回参数

返回结果说明,参见返回结果

返回body中的Data字段是JSON数组,每一个元素包含如下字段:
名称 类型 是否必需 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 对应请求的dataId
taskId 字符串 该检测任务的ID。
results 数组 返回结果,调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述见result
说明 拉流检测场景中,code返回280表示在检测中,返回200表示检测完成。在检测中状态时,检测结果中包含从开始检测到当前时间检测到的问题。
audioScanResults 结构体 视频语音检测结果。具体结构描述见audioScanResult
表 3. result
名称 类型 是否必需 描述
scene 字符串 视频检测场景,和调用请求中的场景对应。
label 字符串 检测结果的分类,与具体的scene对应。取值参见scene 和 label说明
suggestion 字符串 建议您执行的操作,取值范围:
  • pass:视频正常,无需进行其余操作,或者未识别出目标对象
  • review:检测结果不确定,需要进行人工审核,或识别出目标对象
  • block:视频违规,建议执行进一步操作(直接删除或做限制处理)
rate 浮点数 结果为该分类的概率,取值范围为[0.00-100.00]。值越高,表示越有可能属于该分类。
frames JSON数组 判断为该分类的一些截帧检测结果(FrameScanResult),截帧检测结果表的具体结构描述见frame
extras JSON对象 额外附加信息,可能包含的内容有:

imageAdHitLIbInfo:图文违规识别场景(scenes包含ad)中,若检测对象命中了自定义文本库,则返回该字段。格式为数组,具体结构描述见imageAdHitLIbInfo

示例值:
"imageAdHitLIbInfo":"[{"context":"好看视频","libCode":"2144002","libName":"预发测试广告相似文本库a"}]"
logoData 数组 图片中含有logo时,返回识别出来的logo信息,具体结构描述见logoData
说明 仅适用于logo场景。
sfaceData 数组 视频中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述见sfaceData
说明 仅适用于terrorism和sface场景(scene)。关于该参数在sface场景下的具体内容,请参见异步检测
表 4. frame
名称 类型 是否必需 描述
url 字符串 截帧地址。
offset 整型 该截帧距离片头的时间戳,单位为秒。
label 字符串 该视频截帧的风险分类,取值范围请参见scene和label参数说明
rate 浮点数 该视频截帧结果为label所述分类的概率,取值范围为[0.00-100.00]。值越高,表示越有可能属于该分类。
表 5. logoData
名称 类型 是否必需 描述
type 字符串 识别出的logo类型,取值为TV (台标)。
name 字符串 识别出的logo名称。
x 浮点数 以图片左上角为坐标原点,logo区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,logo区域左上角到x轴距离。
w 浮点数 logo区域宽度。
h 浮点数 logo区域高度。
表 6. sfaceData
名称 类型 是否必需 描述
x 浮点数 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
w 浮点数 人脸区域宽度。
h 浮点数 人脸区域高度。
faces 数组 识别出的人脸信息,具体结构描述见face
表 7. face
名称 类型 是否必需 描述
name 字符串 相似人物的名称。
rate 浮点数 相似概率。
id 字符串 人脸Id。
表 8. audioScanResult
名称 类型 是否必需 描述
scene 字符串 视频语音检测的场景。取值:antispam
label 字符串 视频语音检测结果的分类,与具体的audioScene对应。取值参见audioScenes与label参数说明
suggestion 字符串 建议您执行的操作。取值:
  • pass:语音正常,无需进行其余操作
  • review:检测结果不确定,需要进行人工审核
  • block:语音违规,建议执行进一步操作(直接删除或做限制处理)
rate 浮点数 结果为该分类的概率,取值范围为[0.00-100.00]。值越高,越有可能属于该分类。
details JSON数组 语音对应的文本详情(每一句文本对应一个元素),包含一个或者多个元素,具体结构描述见detail
表 9. detail
名称 类型 是否必需 描述
startTime 整型 句子开始的时间,单位为秒。
endTime 整型 句子结束的时间,单位为秒。
text 字符串 语音转换成文本的结果。
label 字符串 该句语言的检测结果的分类,取值参见audioScenes与label参数说明
keyword 字符串 如果了命中用户自定义关键词,返回命中的关键词。
libName 字符串 如果了命中用户自定义关键词,返回关键词所在的词库。
表 10. imageAdHitLIbInfo
名称 类型 是否必需 描述
context 字符串 视频中文字命中的自定义文本内容。
libCode 字符串 视频中文字命中的自定义文本内容对应的库code。
libName 字符串 视频中文字命中的自定义文本内容对应的库名称。

示例

请求示例
[
  "taskId xxx",
  "taskId bbb"
]
返回示例
  • 仅检测视频画面
    {
      "code":200,
      "msg":"OK",
      "requestId":"requestID xxx",
      "data":[
        {
          "code":200,
          "msg":"OK",
          "dataId":"videoId xxx",
          "taskId":"taskId xxx",
          "results":[
            {
              "label":"porn",
              "rate":99.2,
              "scene":"porn",
              "suggestion":"block"
            }
          ]
        }
      ]
    }
  • 检测视频画面与视频中的语音
    {
      "code":200,
      "msg":"OK",
      "requestId":"requestID xxx",
      "data":[
        {
          "code":200,
          "msg":"OK",
          "dataId":"videoId xxx",
          "taskId":"taskId xxx",
          "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":"blabla...",
                    "label":"customized"
                 },
                 {
                    "startTime":24,
                    "endTime":60,
                    "text":"blabla...",
                    "label":"normal"
                 }
               ]
             }
           ]
        }
      ]
    }