腾讯云云直播直播鉴黄_音视频解决方案_同尘科技
开通直播鉴黄,首先要开通直播截图功能,您可以通过 云直播控制台 或直播截图鉴黄 API 来实现,本文主要介绍如何通过直播截图鉴黄 API 来实现直播鉴黄功能。
注意事项
当 COS Bucket 的访问权限为公有读时,并且 Bucket 中存在涉黄涉政及其他违禁的截图内容,建议前往对应的 COS Bucket 中把对应的图片进行删除处理。避免 COS Bucket 被封禁影响使用。
开通直播鉴黄
由于直播鉴黄是基于直播截图的,因此开通直播鉴黄必须开通直播截图功能,以下为具体操作。
1. 创建带鉴黄功能的直播截图模板
调用 CreateLiveSnapshotTemplate, 通过设置 PornFlag = 1,创建一个带鉴黄功能的直播截图模板。
2. 创建带鉴黄功能的直播截图规则
调用 CreateLiveSnapshotRule,创建带鉴黄功能的直播截图规则,将第1步创建的直播截图模板 ID 关联到需要鉴黄的直播 AppId、DomainName、AppName、StreamName 维度下。
3. 发起直播,开始鉴黄
创建带鉴黄功能直播截图规则后,新发起的直播会自动开启鉴黄功能,对于正在直播中的直播流,如需开启直播鉴黄,需要停止、重新发起直播才会生效。
获取直播鉴黄结果
在开通了直播鉴黄功能后,您可在鉴黄回调模板中配置注册的回调域名,则云直播后台会将鉴黄结果回调给您。注意 默认只会将可疑结果进行回调,正常结果不会回调。
1. 创建直播鉴黄回调模板
调用 CreateLiveCallbackTemplate,设置 PornCensorshipNotifyUrl 参数为您的域名,创建直播鉴黄回调模板。
2. 创建直播鉴黄回调规则
调用 CreateLiveCallbackRule,创建带鉴黄功能的直播截图规则,将上一步创建的直播截图模板 ID 关联到需要鉴黄回调的直播 AppId、DomainName、AppName 维度下。
3. 获取鉴黄结果
直播后台会将鉴黄结果通过 HTTP POST 请求发送到您注册的域名,鉴黄结果以 JSON 格式存放在 HTTP Body 中,您可以只通过 type 字段来判断直播是否涉黄。注意我们这里建议使用图片的type
对黄图进行评判,由于检测系统判定无法做到100%准确率,会有少量图片会识别成疑似色情或识别结果不对,建议可以进行人工二次确认。
完整协议如下:
参数 | 是否必填 | 数据类型 | 描述 |
streamId | 选填 | String | 流名称 |
channelId | 选填 | string | 频道 ID |
img | 必填 | string | 预警图片链接 |
type | 必填 | Array | 指检测结果中优先级最高的恶意标签对应的分类值,具体含义可参考参数 label 返回的补充文字描述 |
score | 必填 | Array | type 对应的评分 |
ocrMsg | 选填 | string | 图片的 OCR 识别信息(如果存在) |
suggestion | 必填 | string | 建议值,取值可选:Block:打击Review:待复审Pass:正常 |
label | 必填 | string | 该字段用于返回检测结果(LabelResults)中所对应的优先级最高的恶意标签,表示模型推荐的审核结果,建议您按照业务所需,对不同违规类型与建议值进行处理 |
subLabel | 必填 | string | 该字段用于返回检测结果所命中优先级最高的恶意标签下的子标签名称,如:色情–性行为;若未命中任何子标签则返回空字符串 |
labelResults | 选填 | Array of LabelResult | 该字段用于返回分类模型命中的恶意标签的详细识别结果,包括涉黄、广告等令人反感、不安全或不适宜的内容类型识别结果注意:此字段可能返回 null,表示取不到有效值 |
objectResults | 选填 | Array of ObjectResult | 该字段用于返回物体检测模型的详细检测结果;包括:实体、广告台标、二维码等内容命中的标签名称、标签分数、坐标信息、场景识别结果、建议操作等内容识别信息;详细返回值信息可参阅对应的数据结构(ObjectResults)描述注意:此字段可能返回 null,表示取不到有效值 |
ocrResults | 选填 | Array of OcrResult | 该字段用于返回OCR文本识别的详细检测结果;包括:文本坐标信息、文本识别结果、建议操作等内容识别信息;详细返回值信息可参阅对应的数据结构(OcrResults)描述注意:此字段可能返回 null,表示取不到有效值 |
libResults | 选填 | Array of LibResult | 风险图库审核结果 |
screenshotTime | 必填 | Number | 截图时间 |
sendTime | 必填 | Number | 请求发送时间,UNIX 时间戳 |
stream_param | 选填 | String | 推流参数 |
app | 选填 | String | 推流域名 |
appid | 选填 | Number | 业务 ID |
appname | 选填 | String | 推流 path 路径 |
LabelResult
分类模型命中结果。
名称 | 类型 | 描述 |
Scene | String | 返回模型识别出的场景结果,如广告、色情、有害内容等场景。 |
Suggestion | String | 返回针对当前恶意标签的后续操作建议。当您获取到判定结果后,返回值表示系统推荐的后续操作;建议您按照业务所需,对不同违规类型与建议值进行处理。 返回值:Block:建议屏蔽Review :建议人工复审Pass:建议通过 |
label | String | 该字段用于返回检测结果所对应的恶意标签 |
SubLabel | String | 子标签名称 |
Score | Integer | 该标签模型命中的分值 |
Details | Array of LabelDetailItem | 分类模型命中子标签明细结果 |
LabelDetailItem
分类模型命中子标签结果。
名称 | 类型 | 描述 |
Id | Integer | 序号 |
Name | String | 子标签名称 |
Score | Integer | 子标签分数,取值范围0分 – 100分 |
ObjectResult
实体检测结果详情。
名称 | 类型 | 描述 |
Scene | String | 返回实体识别出的实体场景结果,如二维码、logo、图片 OCR 等场景。 |
Suggestion | String | 返回针对当前恶意标签的后续操作建议。当您获取到判定结果后,返回值表示系统推荐的后续操作;建议您按照业务所需,对不同违规类型与建议值进行处理。返回值:Block:建议屏蔽Review :建议人工复审Pass:建议通过 |
label | String | 该字段用于返回检测结果所对应的恶意标签 |
SubLabel | String | 子标签名称 |
Score | Integer | 所属场景模型命中子标签的分值,取值范围0分 – 100分 |
Names | Array of String | 实体名称列表 |
Details | Array of ObjectDetail | 实体检测结果明细 |
ObjectDetail
实体检测结果明细,当检测场景为实体、广告台标、二维码时表示模型检测目标框的标签名称、标签值、标签分数以及检测框的位置信息。
名称 | 类型 | 描述 |
Id | Integer | 该参数用于返回识别对象的 ID 以方便识别和区分 |
Name | String | 该参数用于返回命中的实体标签 |
Value | String | 该参数用于返回对应实体标签所对应的值或内容。如:当标签为二维码(QrCode)时,该字段为识别出的二维码对应的 URL 地址 |
Score | Integer | 该参数用于返回对应实体标签命中的分值,取值为0-100,如:QrCode 99 则代表相应识别内容命中二维码场景标签的概率非常高 |
Location | Location | 该字段用于返回实体检测框的坐标位置(左上角xy坐标、长宽、旋转角度)以方便快速定位实体的相关信息 |
Location
坐标。
名称 | 类型 | 描述 |
X | Float | 左上角横坐标 |
Y | Float | 左上角纵坐标 |
Width | Float | 宽度 |
Height | Float | 高度 |
Rotate | Float | 检测框的旋转角度 |
OcrResult
OCR 结果检测详情。
名称 | 类型 | 描述 |
Scene | String | 表示识别场景,取值默认为 OCR(图片 OCR 识别)。 |
Suggestion | String | 返回优先级最高的恶意标签对应的后续操作建议。当您获取到判定结果后,返回值表示系统推荐的后续操作;建议您按照业务所需,对不同违规类型与建议值进行处理。返回值:Block:建议屏蔽Review :建议人工复审Pass:建议通过 |
label | String | 该字段用于返回检测结果所对应的恶意标签 |
SubLabel | String | 子标签名称 |
Score | Integer | 所属场景模型命中子标签的分值,取值范围0分 – 100分 |
Text | String | 文本内容 |
Details | Array of OcrTextDetail | OCR 结果详情 |
OcrTextDetail
OCR 文本结果详情。
名称 | 类型 | 描述 |
Text | String | 返回 OCR 识别出的文本内容(OCR 文本识别上限在5000字节内) 。 |
label | String | 该字段用于返回检测结果所对应的恶意标签 |
Keywords | Array of String | 该标签下命中的关键词 |
Score | Integer | 该标签模型命中的分值,取值范围0分 – 100分 |
Location | Location | OCR 文本坐标位置 |
LibResult
黑白库结果明细。
名称 | 类型 | 描述 |
Scene | String | 表示模型的场景识别结果,默认取值为 Similar。 |
Suggestion | String | 返回后续操作建议。当您获取到判定结果后,返回值表示系统推荐的后续操作;建议您按照业务所需,对不同违规类型与建议值进行处理。 返回值:Block:建议屏蔽Review :建议人工复审Pass:建议通过 |
label | String | 该字段用于返回检测结果所对应的恶意标签 |
SubLabel | String | 子标签名称 |
Score | Integer | 图片检索模型识别分值,取值范围0分 – 100分 |
Details | Array of LibDetail | 黑白库结果明细 |
LibDetail
自定义库/黑白库明细。
名称 | 类型 | 描述 |
Id | Integer | 序号 |
ImageId | String | 图片ID |
label | String | 该字段用于返回检测结果所对应的恶意标签 |
Tag | String | 自定义标签 |
Score | Integer | 模型识别分值,取值范围0分 – 100分 |
回调消息示例
{ "ocrMsg": "", "type": [1], "socre": 99, "screenshotTime": 1610640000, "level": 0, "img": "/2023/12/29/https://www.tongchenkeji.com/wp-content/uploads/2023/12/20231229075136-658e7a88a6bd1.jpg", "abductionRisk": [], "faceDetails": [], "sendTime": 1615859827, "suggestion": "Block", "label": "Porn", "subLabel": "PornHigh", "labelResults": [{ "HitFlag": 0, "Scene": "Illegal", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Details": [] }, { "HitFlag": 1, "Scene": "Porn", "Suggestion": "Block", "Label": "Porn", "SubLabel": "PornHigh", "Score": 99, "Details": [{ "Id": 0, "Name": "PornHigh", "Score": 99 }, { "Id": 1, "Name": "WomenChest", "Score": 99 }] }, { "HitFlag": 0, "Scene": "Sexy", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Details": [] }, { "HitFlag": 0, "Scene": "Terror", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Details": [] }], "objectResults": [{ "HitFlag": 0, "Scene": "QrCode", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Names": [], "Details": [] }, { "HitFlag": 0, "Scene": "MapRecognition", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Names": [], "Details": [] }, { "HitFlag": 0, "Scene": "PolityFace", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Names": [], "Details": [] }], "ocrResults": [{ "HitFlag": 0, "Scene": "OCR", "Suggestion": "Pass", "Label": "Normal", "SubLabel": "", "Score": 0, "Text": "", "Details": [] }], "streamId": "teststream", "channelId": "teststream", "stream_param": "txSecret=40f38f69f574fd51126c421a3d96c374&txTime=5DEBEC80", "app": "5000.myqcloud.com", "appname": "live", "appid": 10000, "event_type": 317, "sign": "ac920c3e66**********78cf1b5de2c63", "t": 1615860427}
关闭直播鉴黄
关闭直播鉴黄,可以通过删除截图规则或修改截图模板来实现,所有删除与修改操作只对新的直播生效;对于已经开始的直播,如要关闭鉴黄,必须停止、重新发起直播才会生效。
1. 删除鉴黄截图规则来实现
调用 DeleteLiveSnapshotRule,通过模板 ID 删除 DomainName、 AppName、StreamName 下对应直播截图规格。
2. 删除或修改鉴黄截图模板来实现
调用 ModifyLiveSnapshotTemplate 修改直播模板的鉴黄标志为0。
对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?