内容审核

  • 内容审核 > API 文档 > API调用直播审核

    API调用直播审核

    最近更新时间: 2023-06-01 17:54:47

    本文介绍了 API 调用直播内容审核和回调使用须知,帮助您正确使用此 API 进行直播内容审核,支持基于 API URL 发起 HTTP/HTTPS POST 请求的方式调用。

    注意

    • 直播流格式支持rtmphlsflv等主流协议
    • 支持用户设定图片截帧频率

    功能描述

    直播内容审核 API 主要用于检测或识别直播中的不良信息,并给出审核结果管控建议。支持的审核类型包括:直播鉴黄、直播鉴暴恐、直播敏感人物识别、直播语音违规内容识别。

    使用步骤

    • 创建任务
    • 审核结果回调
    • 查询审核结果
    • 查询任务
    • 列取任务
    • 关闭任务

    公共参数

    请求地址:http://ai.qiniuapi.com/v3/live/censor

    请求 Header

    字段 取值
    Content-Type application/json
    Authorization Qiniu < AccessKey> :< Sign>
    注意: 用户请根据 AccessKey 和 SecretKey 后生成鉴权,以便进行身份验证, <Sign> 的取值请参考七牛鉴权

    创建任务

    请求方式:POST

    请求 url:http://ai.qiniuapi.com/v3/live/censor

    请求参数

    字段 类型 必选 说明
    data.id string N 直播流标示, , 可以包含小写字母、数字、短划线、中划线, 不超过 128 字符
    data.uri string Y 直播流地址,目前支持rtmphlsflv等。
    data.info json 结构体 N 直播流附加信息,通过回调透传给客户
    params.hook_url string N 回调地址,七牛将会向你设置的 URL 发起 Content-Type: application/jsonPOST 请求。
    params.hook_auth boolean N true/false,默认为 false,设置回调请求中加入请求头 authorization,用于回调服务器鉴权。
    params.image.is_on boolean N true/false,默认为 false。图片审核和音频审核必须开启一个。
    params.image.scenes array N 图片审核类型,如果图片审核开启,则为必填字段,没有默认值,可选项:pulp terror politician ads
    params.image.interval_msecs int N 截帧频率,如果图片审核开启,则为必填字段,单位:毫秒,取值范围为 1000 ~ 60000(即 1s~60s)。
    params.image.saver.bucket string N 如果开启图片审核,则为必填字段,直播图片截帧文件存入的 bucket,目前只支持存入七牛云华东的 bucket。如何创建七牛云 bucket,请参见文档
    params.image.saver.prefix string N 保存的图片截帧文件的前缀。
    params.image.hook_rule int N 图片审核结果回调规则,0/1。默认为 0,返回判定结果违规的审核结果;设为 1 时,返回所有审核结果。
    params.audio.is_on boolean N true/false,默认为 false。图片审核和音频审核必须开启一个。
    params.audio.scenes array N 音频审核类型,如果音频审核开启,则为必填字段,没有默认值,目前可选项:antispam
    params.audio.saver.bucket string N 如果开启音频审核,则为必填字段,直播音频截帧文件存入的 bucket,目前只支持存入七牛云华东的 bucket。如何创建七牛云 bucket,请参见文档
    params.image.saver.prefix string N 保存的音频截帧文件的前缀。
    params.audio.hook_rule string N 音频审核结果回调规则,0/1。默认为 0,返回判定结果违规的审核结果;设为 1 时,返回所有审核结果。

    示例

    POST /v3/live/censor HTTP/1.1
    Host: ai.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu YnxrxOSvGotRZpqkZnMzl_euuoqRzOKUd6zwbRju:r6a-o2UpBg6A4puIMnkCExH8lE8=
    
    {
        "data": {
            "id": "live-censor",
            "uri": "rtmp://pili-live-rtmp.qiniu.co/live/censor",
            "info": {
                "live_id": "example"
            }
        },
        "params": {
            "image": {
                "is_on": true,
                "scenes": [
                    "pulp",
                    "terror",
                    "politician"
                ],
                "interval_msecs": 1000,
                "saver": {
                    "bucket": "live",
                    "prefix": "image/"
                },
                "hook_rule": 0
            },
            "audio": {
                "is_on": true,
                "scenes": [
                    "antispam"
                ],
                "saver": {
                    "bucket": "live",
                    "prefix": "audio/"
                },
                "hook_rule": 0
            },
            "hook_url": "http://requestbin.fullcontact.com/1mhqoh41",
            "hook_auth": true
        }
    }
    

    注意: 请把 Authorization 换成您的账号七牛鉴权 QiniuToken

    返回参数说明

    参数 类型 说明
    code int 请求处理结果的状态码,200 表示成功,否则表示异常。
    message string 请求处理信息。
    data.job string 唯一标识该直播审核任务的 ID。

    示例

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "code": 200,
        "message": "ok",
        "data": {
           "job": "example_id"
        }
    }
    

    审核结果回调

    请求 Header

    字段 取值
    Content-Type application/json

    请求参数

    字段 取值 说明
    job string 唯一标识该直播审核任务的 ID。
    live.id string 该直播流的 ID。
    live.uri string 该直播流的地址。
    live.info json 结构体 该直播流附加信息。
    error.timestamp int 错误信息的时间戳。
    error.message string 回调的错误信息。
    image.code int 处理状态:200 调用成功。
    image.message string 与 code 对应的状态描述信息。
    image.job string 唯一标识该直播审核任务的 ID。
    image.url string 图片的 URL。
    image.timestamp int 图片的时间戳。
    image.result json 结构体 该图片资源的审核返回结果,详情请查看表. 资源的审核返回结果
    audio.code int 处理状态:200 调用成功。
    audio.message string 与 code 对应的状态描述信息。
    audio.job string 唯一标识该直播审核任务的 ID。
    audio.url string 音频段的 URL。
    audio.start int 音频开始的时间戳。
    audio.end int 音频结束的时间戳。
    audio.audio_text string 该音频资源的语言识别文本。
    audio.result json 结构体 该音频资源的审核返回结果,详情请查看表. 资源的审核返回结果

    示例

    {
        "job": "example_id",
        "live": {
            "id": "live-censor",
            "uri": "rtmp://pili-live-rtmp.qiniu.co/live/censor?sign=live",
            "info": {
                "live_id": "example"
            }
        },
        "error": {
            "timestamp": 1596845288,
            "message": "example error msg"
        },
        "image": {
            "code": 200,
            "message": "ok",
            "job": "example_id",
            "timestamp": 1596845288,
            "url": "qiniu://11111111@z0/image_save_bucket_name/image_cut_file_key.jpg",
            "result": {
                "suggestion": "pass",
                "scenes": {
                    "pulp": {
                        "suggestion": "pass",
                        "details": [
                            {
                                "suggestion": "pass",
                                "label": "normal",
                                "score": 0.99
                            },
                            {}
                        ]
                    }
                }
            }
        },
        "audio": {
            "code": 200,
            "message": "ok",
            "job": "example_id",
            "start": 1596845288,
            "end": 1596881288,
            "url": "qiniu://11111111@z0/audio_save_bucket_name/audio_cut_file_key.aac",
            "audio_text": "直播审核",
            "result": {
                "suggestion": "pass",
                "scenes": {
                    "pulp": {
                        "suggestion": "pass",
                        "details": [
                            {
                                "suggestion": "pass",
                                "label": "normal",
                                "text": "直播",
                                "score": 0.99
                            },
                            {
                                "suggestion": "pass",
                                "label": "normal",
                                "text": "审核",
                                "score": 0.88
                            }
                        ]
                    }
                }
            }
        }
    }
    

    查询审核结果

    请求方式: POST

    请求 url: http://ai.qiniuapi.com/v3/live/censor/query

    请求参数

    参数 类型 必选 说明
    job string Y 唯一标识该直播审核任务的 ID。
    suggestions array N 查询过滤条件,默认为空,即查询全部。可选项:pass/review/block。
    start int Y 查询结果开始时间,数值为开始时间的时间戳。
    end int N 查询结果结束时间,默认值为开始时间加 10min; 结束时间和开始时间的差值最大为 10min

    示例

    POST /v3/live/censor/query HTTP/1.1
    Host: ai.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu <AccessKey>:<Sign>
    
    {
        "job": "example_id",
        "suggestions": ["review", "block"],
        "start": 1614153600,
        "end": 1614154200
    }
    

    返回参数说明

    字段 取值 说明
    data.marker string 返回游标信息,用于下一次拉取。如果没有剩余条目则返回空字符串。
    data.items.image json 结构体 直播图片审核的返回结果,详情请查看表. 直播审核图片信息的返回结果
    data.items.audio json 结构体 直播音频审核的返回结果,详情请查看表. 直播审核音频信息的返回结果

    表. 直播审核图片信息的返回结果

    字段 取值 说明
    image.code int 处理状态:200 调用成功。
    image.message string 与 code 对应的状态描述信息。
    image.job int 唯一标识该直播审核任务的 ID。
    image.url string 图片的 URL。
    image.timestamp int 图片的时间戳。
    image.result json 结构体 该图片资源的审核返回结果,详情请查看表. 资源的审核返回结果

    表. 直播审核音频信息的返回结果

    字段 取值 说明
    audio.code int 处理状态:200 调用成功。
    audio.message string 与 code 对应的状态描述信息。
    audio.job int 唯一标识该直播审核任务的 ID。
    audio.url string 音频段的 URL。
    audio.start int 音频开始的时间戳。
    audio.end int 音频结束的时间戳。
    audio.audio_text string 该音频资源的语言识别文本。
    audio.result json 结构体 该音频资源的审核返回结果,详情请查看表. 资源的审核返回结果

    表. 资源的审核返回结果

    字段 取值 说明
    result.suggestion string 直播的审核结果管控建议说明
    根据内容审核中各种审核类型的返回结果,系统会将审核结果转换成对应的管控建议,取值包括:[“block”, ”review”, ”pass”]。
    suggestion=block:表示系统确认审核内容违规,建议您将其删除。
    suggestion=review:表示系统无法确认审核内容是否违规,建议您进行人工复核。
    suggestion=pass:表示系统确认审核内容正常,建议您忽略该文件。
    result.scenes. <type> json 结构体 审核类型,目前支持 “pulp”, “terror”,“politician”,“antispam”。
    result.scenes. <type> .suggestion string 该审核类型的结果管控建议,参见 result.suggestion。
    result.scenes. <type> .details[] array 该审核类型的资源审核结果数组。
    result.scenes. <type> .details[].suggestion string 该审核类型的资源审核结果管控建议,参见 result.suggestion。
    result.scenes. <type> .details[].label string 该审核类型的截帧审核结果标签,具体请参见内容审核的 label/group。
    result.scenes. <type> .details[].group string 该审核类型的截帧审核结果分组信息,具体请参见内容审核的 label/group。
    result.scenes. <type> .details[].score float 该审核类型的截帧审核结果置信度。
    result.scenes. <type> .details[].text string 音频审核违规内容结果字段。

    示例

    {
        "code": 200,
        "message": "ok",
        "data": {
            "marker": "",
            "items": {
                "image": [
                    {
                        "code": 200,
                        "message": "ok",
                        "job": "example_id",
                        "timestamp": 1596845288,
                        "url": "qiniu://11111111@z0/image_save_bucket_name/image_cut_file_key.jpg",
                        "result": {
                            "suggestion": "pass",
                            "scenes": {
                                "pulp": {
                                    "suggestion": "pass",
                                    "details": [
                                        {
                                            "suggestion": "pass",
                                            "label": "normal",
                                            "score": 0.99
                                        },
                                        {}
                                    ]
                                }
                            }
                        }
                    },
                    {}
                ],
                "audio": [
                    {
                        "code": 200,
                        "message": "ok",
                        "job": "example_id",
                        "start": 1596845288,
                        "end": 1596881288,
                        "url": "qiniu://11111111@z0/audio_save_bucket_name/audio_cut_file_key.aac",
                        "audio_text": "直播审核",
                        "result": {
                            "suggestion": "pass",
                            "scenes": {
                                "antispam": {
                                    "suggestion": "pass",
                                    "details": [
                                        {
                                            "suggestion": "pass",
                                            "label": "normal",
                                            "text": "直播",
                                            "score": 0.99
                                        },
                                        {
                                            "suggestion": "pass",
                                            "label": "normal",
                                            "text": "审核",
                                            "score": 0.88
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    {}
                ]
            }
        }
    }
    

    查询任务

    请求方式: POST

    请求 url: http://ai.qiniuapi.com/v3/live/censor/jobinfo

    请求参数

    参数 类型 必选 说明
    job string Y 唯一标识该直播审核任务的 ID。

    示例

    POST /v3/live/censor/jobinfo HTTP/1.1
    Host: ai.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu <AccessKey>:<Sign>
    
    {
        "job": "example_id"
    }
    

    返回参数说明

    字段 取值 说明
    code int 请求处理结果的状态码,200 表示成功,否则表示异常。
    message string 请求处理结果的提示信息。
    data.id string 直播审核任务标示
    data.data.id string 直播流标示
    data.data.uri string 直播流地址
    data.data.info json 结构体 直播流附加信息
    data.params.hook_url string 回调地址
    data.params.hook_auth boolean 回调鉴权是否开启
    data.params.image.is_on boolean 直播图片审核是否开启
    data.params.image.scenes array 图片审核类型
    data.params.image.interval_msecs int 截帧频率
    data.params.image.saver.bucket string 截帧文件存入的 bucket
    data.params.image.saver.prefix string 保存图片截帧文件前缀。
    data.params.image.hook_rule int 图片审核结果回调规则
    data.params.audio.is_on boolean 音频审核是否开启
    data.params.audio.scenes array 音频审核类型
    data.params.audio.saver.bucket string 音频截帧文件存入的 bucket
    data.params.image.saver.prefix string 保存音频截帧文件前缀。
    data.params.audio.hook_rule string 音频审核结果回调规则
    data.message string 任务状态相关信息
    data.status string 任务状态, waiting/doing/stop/finished
    data.created_at string 任务创建时间戳
    data.updated_at string 任务更新时间戳

    示例

    {
        "code": 200,
        "message": "ok",
        "data": {
            "id": "example_id",
            "data": {
                "id": "",
                "uri": "",
                "info": {}
            },
            "params": {
                "hook_url": "",
                "hook_auth": false,
                "image": {
                    "is_on": true,
                    "scenes": [
                        "pulp",
                        "terror"
                    ],
                    "interval_msecs": 1000,
                    "saver": {
                        "bucket": "",
                        "prefix": ""
                    },
                    "hook_rule": 0
                },
                "audio": {
                    "is_on": true,
                    "scenes": [
                        "antispam"
                    ],
                    "saver": {
                        "bucket": "",
                        "prefix": ""
                    },
                    "hook_rule": 0
                }
            },
            "message": "",
            "status": "doing",
            "created_at": 1596845288,
            "updated_at": 1596845888
        }
    }
    

    列取任务

    请求方式: POST

    请求 url: http://ai.qiniuapi.com/v3/live/censor/list

    请求参数

    参数 类型 必选 说明
    start int Y 查询时间段开始时间戳。
    end int Y 查询时间段结束时间戳。
    status string Y 任务状态, waiting/doing/stop/finished
    limit int N 查询审核结果条数,默认为 10,最大 100 条。
    marker string N 上一次请求返回的标记,作为本次请求的起点信息。可选,默认值为空字符串。

    示例

    POST /v3/live/censor/list HTTP/1.1
    Host: ai.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu <AccessKey>:<Sign>
    
    {
        "start": 1596845288,
        "end": 1596881288,
        "status": "doing",
        "limit": 100,
        "marker": ""
    }
    

    返回参数说明

    字段 取值 说明
    code int 请求处理结果的状态码,200 表示成功,否则表示异常。
    message string 请求处理结果的提示信息。
    data.marker string 返回游标信息,用于下一次拉取。如果没有剩余条目则返回空字符串。
    data.items[] array 直播审核任务查询结果。
    data.items[].id string 直播审核任务标示
    data.items[].data.id string 直播流标示
    data.items[].data.uri string 直播流地址
    data.items[].data.info json 结构体 直播流附加信息
    data.items[].params.hook_url string 回调地址
    data.items[].params.hook_auth boolean 回调鉴权是否开启
    data.items[].params.image.is_on boolean 直播图片审核是否开启
    data.items[].params.image.scenes array 图片审核类型
    data.items[].params.image.interval_msecs int 截帧频率
    data.items[].params.image.saver.bucket string 截帧文件存入的 bucket
    data.items[].params.image.saver.prefix string 保存图片截帧文件前缀。
    data.items[].params.image.hook_rule int 图片审核结果回调规则
    data.items[].params.audio.is_on boolean 音频审核是否开启
    data.items[].params.audio.scenes array 音频审核类型
    data.items[].params.audio.saver.bucket string 音频截帧文件存入的 bucket
    data.items[].params.image.saver.prefix string 保存音频截帧文件前缀。
    data.items[].params.audio.hook_rule string 音频审核结果回调规则
    data.items[].message string 任务状态相关的处理信息。
    data.items[].status string 任务状态, waiting/doing/stop/finished
    data.items[].created_at string 任务创建时间戳
    data.items[].updated_at string 任务更新时间戳

    示例

    {
        "code": 200,
        "message": "ok",
        "data": {
            "items": [
                {
                    "id": "example_id",
                    "data": {
                        "id": "",
                        "uri": "",
                        "info": {}
                    },
                    "params": {
                        "hook_url": "",
                        "hook_auth": false,
                        "image": {
                            "is_on": true,
                            "scenes": [
                                "pulp",
                                "terror"
                            ],
                            "interval_msecs": 1000,
                            "saver": {
                                "bucket": "",
                                "prefix": ""
                            },
                            "hook_rule": 0
                        },
                        "audio": {
                            "is_on": true,
                            "scenes": [
                                "antispam"
                            ],
                            "saver": {
                                "bucket": "",
                                "prefix": ""
                            },
                            "hook_rule": 0
                        }
                    },
                    "message": "",
                    "status": "doing",
                    "created_at": 1596845288,
                    "updated_at": 1596845888
                },
                {}
            ],
            "marker": ""
        }
    }
    

    关闭任务

    请求方式: POST

    请求 url: http://ai.qiniuapi.com/v3/live/censor/close

    请求参数

    参数 类型 必选 说明
    job string Y 唯一标识该直播审核任务的 ID。

    示例

    POST /v3/live/censor/close HTTP/1.1
    Host: ai.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu <AccessKey>:<Sign>
    
    {
        "job": example_id"
    }
    
    {
        "code": 200,
        "message": "ok"
    }
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close