一、使用场景
直播过程中,当主讲人触发敏感词或音频内容违规时,平台将通过审核系统识别违规内容,并通知客户侧进行观看端内容管控。主讲人音频违规触发 → 我方平台推送违规回调至客户业务后端 → 客户后端透传违规事件至观看端前端 → 前端结合播放器实时延迟及平台下 发参数计算遮罩启停时机 → 执行画面遮挡与静音处理
二、回调说明(平台 → 三方后端)
音频内容经识别判定违规后,平台将主动向客户配置的回调地址发起 HTTP 回调,并推送违规事件全量数据。回调参数#
| 参数 | 类型 | 是否必须 | 含义 |
|---|
| result | object | 是 | 音频检测结果 |
| user_id | integer | 是 | 用户ID |
| refer | string | 是 | 来源标识,固定值:vhall |
| signature | string | 是 | 验签签名,用于接口数据校验 |
| method_id | integer | 是 | 事件ID |
| webinar_id | string | 是 | 活动ID |
| child_user_id | integer | 是 | 子账号用户ID;无独立子账号时同user_id |
| mid | string | 是 | 消息ID |
| time | integer | 是 | 时间戳 |
result 子参数(内部字段按JSON顺序)#
| 参数 | 类型 | 是否必须 | 含义 |
|---|
| source | string | 是 | 审核来源 : 暂定仅支持音频 |
| method | string | 是 | 审核方式 : ai(大模型审核)/ keyword(敏感词审核) |
| label | string | 是 | 审核结果 : 固定值暂定为finance |
| sub_label | string | 是 | 审核结果 |
| description | string | 否 | 备注说明 : 大模型专用(大模型给出的违规原因) |
| audio_text | string | 是 | 语音识别文本 |
| keywords | array[string] | 是 | 命中的敏感关键词列表 |
| audio_duration | integer | 是 | 违规音频片段总时长,单位:秒(遮罩整体持续时长) |
| conceal_wait_duration | integer | 是 | 平台预设遮罩等待时长,单位:秒(延迟启动遮罩基准值) |
{
"result": {
"source": "audio",
"method": "keyword",
"label": "finance",
"sub_label": "命中敏感词",
"description": "",
"audio_text": "这款产品线上专属福利,市面上仅此一家才有这个优惠政策,遥遥领先与同类竞品,想要参与活动的朋友抓紧了解,错过本次活动后续再无同规格福利。",
"keywords": [
"仅此一家","遥遥领先"
],
"audio_duration": 42,
"conceal_wait_duration": 13
},
"user_id": 102856661,
"refer": "vhall",
"signature": "8c2ffbe1a6a80bfe511d06eabb50160e",
"method_id": 90,
"webinar_id": "316998033",
"child_user_id": 102856661,
"mid": "6fe83da24bc6483e5652657ed5597512",
"time": 1780384580
}
三、观看端(websdk接入层)接入处理规范
1、客户后端收到平台回调后,应将违规信息下发至观看端。2、观看端接收到违规事件后,需获取当前播放器实时播放延迟,并结合平台回调参数计算遮罩启动时间。
| 参数 | 含义 |
|---|
playDelay | 当前观众端的直播延迟(秒) |
conceal_wait_duration | 平台回调下发的基准等待时长(单位:秒) |
遮罩启动时间 = playDelay + conceal_wait_duration
| 节点 | 说明 |
|---|
| 生命周期节点 | 前端执行动作 |
| 收到违规事件 | 计算遮罩启动时间 |
| 到达启动时间 | 调用 applyMediaMask(),开启画面遮罩 + 播放器静音 |
| 遮罩生效 | 遮挡观众端画面、音频静音 |
| 遮罩持续时长 | 固定为回调参数 audio_duration 数值(秒),前端无需自行计算 |
| 遮罩到期 | 调用 removeMediaMask() , 移除遮罩并解除静音 |
遮罩持续时间由平台通过 audio_duration 明确指定,前端无需自行估算。
每次收到新的违规事件,均需重新计算遮罩启动时间和持续时间;
若上一条违规事件对应的遮罩任务尚未结束,则应取消原有定时任务;
建议前端维护单例遮罩任务,避免多个违规事件同时控制播放器状态而导致状态异常。