内容审核

  • 内容审核 > API 文档 > API调用视频审核 > API调用视频审核 历史文档 > API调用视频鉴暴恐v1(不推荐)

    API调用视频鉴暴恐v1(不推荐)

    最近更新时间: 2019-07-11 17:59:21

    视频鉴暴恐提供视频内容检测,识别视频中是否存在暴恐内容。

    • 支持存储在七牛云 bucket(支持华东、华北和华南 bucket)或 非七牛云 bucket 中的视频进行视频鉴暴恐。
    • 支持实时处理和异步处理两种方式:实时处理时,视频鉴暴恐结果会在识别完成后立即返回;异步处理时,会立即返回job_id,视频鉴暴恐结果通过job_id获得。
    • 视频鉴暴恐结果会返回所有视频片段是属于暴恐、或正常的识别结果。同时为了让用户知道一个视频整体的分类,返回的结果会包含视频片段中出现过的分类,并显示属于这个分类的视频片段的最高的置信度。
    • 可以通过设置请求参数,仅返回满足客户需求的视频片段(例如:用户仅需要返回包含暴恐的视频片段,以便对这部分内容做人工审核)。
    • 支持一次调用同时请求鉴黄、鉴暴恐、敏感人物识别。请查看视频鉴黄文档中三鉴(鉴黄、鉴暴恐和敏感人物识别)同时调用的示例。

    视频片段segments视频鉴黄是把视频截帧后,对截帧图片进行鉴黄。当连续帧推理结果一致时,表示这些帧都属于同一种类型,则把这一时段的视频认为是一个视频片段。

    请求语法

    POST /v1/video/<vid>
    Host: ai.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu <AccessKey>:<Sign>
    
    {
        "data": {
            "uri": "http://www.qiniu.com/video.mp4"
        },
        "params": {
            "async": <async:bool>,
            "vframe": {
                "mode": <mode:int>,
                "interval": <interval:float>
            },
            "save": {
                "bucket": <bucket:string>,
                "prefix": <prefix:string>
            },
            "hookURL": "http://yy.com/yyy"
        },
        "ops": [
            {
                "op": <op:string>,
                "params": {
                    "other": {
                        "detail": <bool>
                    },
                    "labels": [
                        {
                            "label": <label:string>,
                            "select": <select:int>,
                            "score": <score:float>
                        },
                        ...
                    ]
                }
            },
            ... 
        ]
    }
    
    

    注意: 需要在 POST 请求的 head 部分添加七牛鉴权,以进行用户身份验证。

    参数 类型 必选 说明
    vid string 调用者设置的视频唯一标识,异步处理的返回结果中会带上该信息
    data.uri string 视频地址
    params.async boolean true是异步处理,false是同步处理,不填则取默认值false
    params.vframe.mode int 截帧逻辑,可选值为[0, 1]0表示每隔固定时间截一帧,固定时间在vframe.interval中设定;1表示截关键帧。不填表示取默认值1
    params.vframe.interval int params.vframe.mode0时,用来设置每隔多长时间截一帧,单位s,取值范围为1~60, 不填则取默认值5s
    params.save.bucket string 保存截帧图片的Bucket名称,目前只支持华东的bucket。如何创建七牛云bucket,请参见文档
    params.save.prefix string 截帧图片名称的前缀,图片名称的格式为<prefix>/<video_id>/<offset> (图片命名格式仅供参考,业务请不要依赖此命名格式)
    params.hookURL string 视频检测结束后的回调地址
    ops.op string 视频检测执行的命令,支持多种视频检测操作。目前,视频鉴暴恐的命令是terror
    ops.op.params.other.detail bool 仅当ops.opterror时有效,用于判断是否返回暴恐的详细分类结果。true表示返回详细分类结果,false表示不返回详细分类结果。默认是false,不返回详细分类结果。
    ops.op.params.labels.label string 对某个命令返回label进行过滤,与ops.op.params.labels.selectops.op.params.labels.score一起使用。例如,视频鉴暴恐的命令terror的label有0正常, 1暴恐。
    ops.op.params.labels.select int ops.op.params.labels.label中设置的label,设置过滤条件,1表示忽略不选,2表示只选该类别。
    ops.op.params.labels.score float 过滤返回label结果的置信度参数,当ops.op.params.labels.select=1时表示忽略不选小于该设置的结果,当select=2时表示只选大于等于该设置的结果

    响应语法

    返回结果按照请求参数params.async分为两种:

    • params.async == false:实时处理请求,视频鉴暴恐完成后就返回结果
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        <op:string>: {
            "labels": [
                {
                    "label": <label:string>,
                    "score": <score:float>
                },
                ...
            ],
            "segments": [
                {
                    "offset_begin": <offset:int>,
                    "offset_end": <offset:int>,
                    "labels": [
                        {
                            "label": <label:string>,
                            "score": <score:float>
                        },
                        ...
                    ],
                    "cuts": [
                        {
                            "offset": <offset:int>,
                            "uri": <uri:string>,
                            "result": {
                                "label": <label:string>,
                                "class": <class:string>,
                                "score": <score:float>,
                                "review": <review:bool>
                            }
                        },
                        ...
                    ]
                },
                ...
            ]
        }
    }
    
    参数 类型 说明
    op string 视频检测命令
    op.labels.label string 视频维度的标签,与op.lables.score 成对返回。例如,某个视频进行视频鉴暴恐处理,视频片断中有若干个标签为0正常和1暴恐的结果,那么就表示这个视频有0正常和1暴恐两类标签。
    op.lables.score float 显示的是op.labels.label这类标签的置信度。这个值取的是该视频中属于这类的所有视频片断的置信度的最大值。
    op.segments.offset_begin int 视频片段起始的时间位置,单位为毫秒。
    op.segments.offset_end int 视频片段结束的时间位置,单位为毫秒。
    op.segments.labels.label string 视频片断所属的标签,一个视频片断只会有一个标签。
    op.segments.labels.score float 视频片断所属标签的置信度。这个值取的是该视频片断中所有帧的置信度的最大值。
    op.segments.cuts.offset int 视频截帧的时间位置,单位为毫秒
    op.segments.cuts.uri string 视频截帧的保存路径
    op.segments.cuts.result interface 视频截帧得到的图片的检测标签,结果与具体的命令有关。例如,视频鉴暴恐的命令terror的label有0正常, 1暴恐。
    op.segments.cuts.result.class string 如果此视频片段属于暴恐,则此字段用于显示暴恐的详细分类,具体分类包括血腥bloodiness、自焚self_burning、斩首类beheaded、人群聚集类march_crowed、警民冲突fight_police、民众肢体接触fight_person、违规旗帜类illegal_flag、刀knives、枪guns、特殊字符文字(主要为阿拉伯语,不支持藏语)special_characters、 动漫血腥类anime_bloodiness、特殊着装special_clothing、二次元刀anime_knives以及二次元枪anime_guns
    • params.async == true:异步处理请求,立即返回job_id
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "job": <job_id>
    }
    
    参数 类型 必选 说明
    job_id string 服务器返回的,唯一标识该视频任务的ID。

    异步处理的结果

    • 异步处理后,获取单个视频鉴暴恐的结果

    请求语法

    GET /v1/jobs/video/<job-id> HTTP/1.1
    Host: ai.qiniuapi.com
    Authorization: Qiniu <AccessKey>:<Sign>
    

    注意: 需要在请求的 head 部分添加七牛鉴权,以进行用户身份验证。

    参数 类型 必选 说明
    job_id string 服务器返回的,唯一标识该视频任务的ID。

    响应语法

    {
        "id": <job_id:string>,
        "vid": <string>,
        "request": {},
        "status": <string>,
        "result": {
            <op>: {
            },
            ...
        },
        "error": <string>,
        "created_at": <string>,
        "updated_at": <string>
    }
    
    参数 类型 说明
    id string 服务器返回的,唯一标识该视频任务的ID
    vid string 视频唯一标识,申请任务时传入的vid
    request object 视频分析请求
    status string 任务状态,WAITING/DOING/RESCHEDULED/FAILED/FINISHED,RESCHEDULED是指等待重试中
    result object 详细解释见实时处理请求返回结果
    error string 处理视频的过程中遇到的错误,会返回相应的错误信息,详细解释见错误代码含义
    created_at string 任务创建时间,like: 2006-01-02T15:03:04
    updated_at string 任务更新时间,like: 2006-01-02T15:03:04

    错误代码含义

    Error Code Error Message Desc
    400 "bad op" 输入的op值不支持
    400 "invalid interval, allow mode is [0, 10]" 输入的vframe的interval值不在[0-10]的范围
    400 "invalid mode, allow mode is [0, 1]" 输入的vframe的mode值不在[0-1]的范围
    424 "cannot find the video" 找不到输入的视频文件
    400 "cannot open the file" 打不开输入的视频文件
    500 "cannot allow memory" 发生内存不足等情况
    • 异步处理时,获取视频处理任务状态

    请求语法

    GET /v1/jobs/video?status=<string> HTTP/1.1
    Host: ai.qiniuapi.com
    Authorization: Qiniu <AccessKey>:<Sign>
    

    注意: 需要在请求的 head 部分添加七牛鉴权,以进行用户身份验证。

    参数 类型 必选 说明
    status string 任务状态,WAITING/DOING/RESCHEDULED/FAILED/FINISHED,RESCHEDULED是指等待重试中

    响应语法

    [
        {
            "id": <string>,
            "status": <string>,
            "created_at": <string>,
            "updated_at": <string>
        },
        ...
    ]
    
    参数 类型 说明
    id string 服务器返回的,唯一标识该视频任务的ID
    status string 任务状态,WAITING/DOING/RESCHEDULED/FAILED/FINISHED,RESCHEDULED是指等待重试中
    created_at string 任务创建时间,like: 2006-01-02T15:03:04
    updated_at string 任务更新时间,like: 2006-01-02T15:03:04

    视频处理的结果回调

    • 所有op处理结束后的结果回调CALLBACK /v1/video/result

    请求语法

    POST /xxxxx HTTP/1.1
    Content-Type: application/json
    
    {
        "id": <vid:string>,
        "result": {
            <op>: {
            },
            ...
        }
    }
    
    参数 类型 说明
    id string 调用者设置的视频唯一标识
    result object 详细解释见实时处理请求返回结果

    请求示例

    {
        "data": {
            "uri": "http://foo.com/foo.mp4"
        },
        "params": {
            "vframe": {
                "interval": 5
            }
        },
        "ops": [
            {
                "op": "terror",
                "params": {
                    "labels": [
                        {
                            "label": "0"
                        }
                    ]
                }
            }
        ]
    }
    
    {
        "terror": {
            "labels": [
                {
                    "label": "0",
                    "score": 0.9996557
                }
            ],
            "segments": [
                {
                    "cuts": [
                        {
                            "offset": 0,
                            "result": {
                                "label": "0",
                                                            "class": normal,
                                "review": false,
                                "score": 0.9996557
                            }
                        },
                        ...
                    ],
                    "labels": [
                        {
                            "label": "0",
                            "score": 0.9996557
                        }
                    ],
                    "offset_begin": 0,
                    "offset_end": 0
                }
            ]
        }
    }
    

    价格

    视频鉴暴恐的工作流程如下:
    1)按照API里面的设置对视频进行截帧,截帧不额外收费
    2)对截帧进行图片鉴暴恐
    所以,视频鉴暴恐的价格最终还是图片鉴暴恐的价格,具体价格请参考

    服务价格

    视频鉴暴恐是对视频截帧后,对截帧进行图片鉴暴恐,所以视频鉴暴恐价格实际使用的是截帧图片鉴暴恐的价格,与图片鉴暴恐共用范围。

    例:
    某月视频文件使用视频鉴暴恐服务,视频截帧的数量为400万,即视频鉴暴恐产生的图片鉴暴恐量为400万;当月图片文件使用鉴暴恐服务,其调用量为106万。则这个月总的图片鉴暴恐调用量为506万,账单金额则为:
    图片鉴暴恐:

    3000000*0.155/100+2000000*0.145/100=4650+2900=7550元

    以上内容是否对您有帮助?
  • Qvm free helper
    Close