智能多媒体 API

  • 视频鉴暴恐

    最近更新时间:2018-07-02 18:22:37

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

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

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

    请求语法

    POST /v1/video/<vid>
    Host: argus.atlab.ai
    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>,
                "hookURL": "http://yy.com/yyy",
                "params": {
                    "other": {
                        "detail": <bool>
                    },
                    "labels": [
                        {
                            "label": <label:string>,
                            "select": <select:int>,
                            "score": <score:float>
                        },
                        ...
                    ],
                    "terminate": {
                        "mode": <mode:int>,
                        "labels": {
                            <label>: <max:int>
                        }
                    }
                }
            },
            ... 
        ]
    }
    
    

    注意: 需要在 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, 不填则取默认值5s
    params.save.bucket string 保存截帧图片的Bucket名称
    params.save.prefix string 截帧图片名称的前缀,图片名称的格式为<prefix>/<video_id>/<op>/<offset>
    params.hookURL string 视频检测结束后的回调地址
    ops.op string 视频检测执行的命令,支持多种视频检测操作。目前,视频鉴暴恐的命令是terror
    ops.op.hookURL string 单个命令的回调地址
    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时表示只选大于等于该设置的结果
    ops.op.params.terminate.mode int 视频检测命令提前停止处理的参数。1表示按帧计数;2表示按片段计数,具体的该类别的最大个数在 ops.op.params.terminate.labels.label.max字段中设置。使用的场景是,如果某个视频已经检测出数帧或者数个片段的暴恐内容,就可以判定该视频违规,并提前结束视频检测,以节约成本。
    ops.op.params.terminate.labels.label string 视频检测命令返回的label。例如,视频鉴暴恐的命令terror的label有0正常, 1暴恐。
    ops.op.params.terminate.labels.label.max int ops.op.params.terminate.label一起使用,设置该类别的最大个数,达到该值则处理过程退出

    响应语法

    返回结果按照请求参数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、爆炸类bomb、斩首类beheaded、游行类march、斗殴类fight、伊斯兰星月旗islamic flag、ISIS旗帜isis flag、藏独旗帜tibetan flag、刀knives、枪guns、正常normal
    • 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
    
    
    参数 类型 必选 说明
    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/FINISHED
    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]的范围
    400 "invalid starttime" 输入的vframe的ss值小于0
    400 "invalid duration" 输入的vframe的t值小于0
    400 "invalid parameters" 输入的视频参数错误
    424 "cannot find the video" 找不到输入的视频文件
    400 "cannot open the file" 打不开输入的视频文件
    500 "cannot allow memory" 发生内存不足等情况

    * 异步处理时,获取视频处理任务列表

    请求语法

    GET /v1/jobs/video?status=<string> HTTP/1.1
    
    
    参数 类型 必选 说明
    status string 任务状态,WAITING/DOING/FINISHED

    响应语法

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

    视频处理的结果回调

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

    请求语法

    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>
                            }
                        },
                        ...
                    ]
                },
                ...
            ]
        }
    }
    
    参数 类型 必选 说明
    id string 调用者设置的视频唯一标识
    op string 视频检测命令
    result.labels.label string 视频维度的标签,与result.lables.score 成对返回。
    result.lables.score float 显示的是result.labels.label这类标签的置信度。这个值取的是该视频中属于这类的所有视频片断的置信度的最大值。
    result.segments.offset_begin int 视频片段起始的时间位置,单位为毫秒。
    result.segments.offset_end int 视频片段结束的时间位置,单位为毫秒。
    result.segments.labels.label string 视频片断所属的标签,一个视频片断只会有一个标签。
    op.segments.labels.class string 如果此视频片段属于暴恐,则此字段用于显示暴恐的详细分类,具体分类包括血腥类、爆炸类、斩首类、游行类、斗殴类、伊斯兰星月旗、ISIS旗帜、藏独旗帜、刀、枪等。
    result.segments.labels.score float 视频片断所属标签的置信度。这个值取的是该视频片断中所有帧的置信度的最大值。
    result.segments.cuts.offset int 视频截帧的时间位置,单位为毫秒
    result.segments.cuts.uri string 视频截帧的保存路径
    result.segments.cuts.result interface 视频截帧得到的图片的检测标签,结果与具体的命令有关。例如,视频鉴暴恐的命令terror的label有0正常, 1暴恐
    result.segments.cuts.result.class string 如果此视频片段属于暴恐,则此字段用于显示暴恐的详细分类,具体分类包括血腥类bloodiness、爆炸类bomb、斩首类beheaded、游行类march、斗殴类fight、伊斯兰星月旗islamic flag、ISIS旗帜isis flag、藏独旗帜tibetan flag、刀knives、枪guns、正常normal
    • 所有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)对截帧进行图片鉴暴恐
    所以,视频鉴暴恐的价格最终还是图片鉴暴恐的价格,具体价格请参考

    以上内容是否对您有帮助?
  • 提交工单