音视频通话 2.0
Android
动态与公告
更新日志(V4.6)
更新日志(V5)
活动与公告
【活动】音视频通话内容安全检测限时补贴
【活动】赠送100万分钟音视频通话时长
【邀测】音视频通话2.0V5.3邀请公测
新手接入指南
产品简介
产品介绍
功能特性
产品优势
应用场景
基本概念
使用限制
性能指标
产品计费
按量计费
资源包
体验 Demo
下载 SDK 和示例代码
升级指南
快速开始
快速跑通 Sample Code
接入流程
创建应用
开通服务
集成 SDK
实现音视频通话
Token 鉴权
高级 Token 鉴权
基础功能
设置音频属性
设置视频属性
设置视频旋转方向
设置通话音量
屏幕共享
音频共享
监测发言者音量
通话前网络质量探测
通话中质量监测
进阶功能
音频管理
客户端音频录制
原始音频数据
美声变声与混响
耳返
自定义音频采集与渲染
音效与伴音
设置音频订阅优先级
音频裸流传输
媒体补充增强信息SEI
视频管理
视频截图
水印
云信美颜
相芯美颜
自定义视频采集
虚拟背景
视频图像畸变矫正
视频裸流传输
多房间管理
设备管理
视频设备管理
音频设备管理
媒体流管理
跨房间媒体流转发
媒体流加密
视频流回退
云端录制
使用云代理
本地服务端录制
AI 融合功能
AI 超分
AI 降噪
场景实践
1 对 1 娱乐社交
语聊房
PK连麦
在线教育
互联网问诊
最佳实践
音视频参数配置推荐
房间连接状态管理
实现音视频安全检测
轻松构建本土Clubhouse
API 参考
Android API 参考
服务端 API
错误码(V5)
错误码(V4.x)
控制台指南
常见问题处理
FAQ
错题集
获取音频 Dump 文件
音频常见问题排查
视频常见问题排查
服务协议

实现音视频安全检测

更新时间: 2022/06/30 15:47:19

本文介绍音视频通话2.0接入安全通的步骤。

背景介绍

泛娱乐类音视频聊天场景中,充斥着各种不可控的风险因素,例如色情、暴恐和涉政信息等。随着国家监管的日趋严格,各平台需要对平台的音视频内容进行管控,自行处理音视频内容审核需要投入大量人力进行甄别。 网易云信融合网易易盾的内容审核能力,为开发者提供实时音视频安全通(内容安全审核)服务(以下简称安全通),对音视频内容进行有效的判别和筛选,降低人力投入。

视频讲解

功能介绍

安全通是基于实时音视频通话的内容审核及处理功能。安全通的基础功能包含:

  • 创建安全通审核任务
  • 查询审核视频截图
  • 查询审核音频断句
  • 停止安全通审核任务
  • 接收安全审核结果
  • 处理安全审核结果

基于实时音视频通话内容,实现全流程的“审-查-禁”服务功能。

操作流程

安全通服务支持音视频2.0 全终端接入检测,无论您使用的是什么平台,接入流程一致。

流程图.png

功能实现

步骤一 准备工作

接入安全通之前,请确保已完成以下准备工作:

  • 登录云信控制台创建应用、申请开通音视频通话 2.0 服务和安全通服务。具体步骤请参见音视频通话2.0接入流程开通安全通服务
  • 实现基础的音视频通话功能,具体操作步骤请参见实现音视频通话
  • 准备接收抄送消息的服务器公网地址,并配置消息抄送。配置方法请参见开通消息抄送。审核结果会以消息抄送发送至您预留的抄送地址。
  • 配置内容检测相关规则。在安全通功能页面,单击右上角的更多安全配置,配置安全检测策略。具体步骤请参见开通安全通服务
  • 准备音视频通话开发环境。

步骤二 创建音视频通话

  1. (可选)创建房间,传入指定的房间名及用户ID。

    如果已存在音视频通话的房间,您也可以直接加入音视频通话的房间。

    例如,房间名为 neteasetest ,用户ID为 12345 。示例代码如下:

    curl --location --request POST 'https://logic-dev.netease.im/v2/api/room' \
    --header 'AppKey: ***' \  //请使用您应用的appkey
    --header 'Nonce: ***' \  //随机数,最大长度为 128 个字符。
    --header 'CurTime: 1639555317' \  //当前 Unix 时间戳,即从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的秒数。数据类型为 String。
    --header 'CheckSum: ba193e4d4ba3991987eb72afe692095598552b79' \ //计算方式详见:https://doc.yunxin.163.com/docs/jcyOTA0ODM/TA5MjEzNTM?platformId=50326
    --header 'Content-Type: application/json' \
    --data-raw '{
    "channelName": "neteasetest",
    "mode": 2,
    "uid": 12345
    }'
    
    

    返回示例如下:

    {
    "code": 200,
    "errmsg": "reason code 200", //code 200即为创建成功,其他状态码请参考 https://doc.yunxin.163.com/docs/jcyOTA0ODM/DY2NDIwMTM?platformId=50326
    "cid": 1344424603797473
    }
    
  2. 建立音视频通话。

    为了方便演示,本文以Web端进行音视频通话,传入与创建房间时相同的房间名,建立音视频通话。

    this.client.join({
        channelName: "neteasetest", //房间名
        uid: 12345, //用户id
        token: '' //鉴权token,详见:https://doc.yunxin.163.com/docs/jcyOTA0ODM/TQ0MTI2ODQ?platformId=50002
      });
    

步骤三 创建安全通审核任务

  • 创建安全通审核任务之前,请确保房间已创建且房间中已有一名以上成员。
  • 安全通审核任务的开始和结束,都是针对房间。

为对应房间开启安全通审核任务,具体步骤请参见创建安全通审核任务

示例代码如下:

curl --location --request POST 'https://logic-dev.netease.im/livewallsolution/submit' \
--header 'AppKey: ***' \  //请使用您应用的appkey
--header 'Nonce: ***' \  //随机数,最大长度为 128 个字符。
--header 'CurTime: 1639555317' \  //当前 Unix 时间戳,即从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的秒数。数据类型为 String。
--header 'CheckSum: ba193e4d4ba3991987eb72afe692095598552b79' \ //计算方式详见:https://doc.yunxin.163.com/docs/jcyOTA0ODM/TA5MjEzNTM?platformId=50326
--header 'Content-Type: application/json' \
--data-raw '{
    "monitorUid": 666666,
    "channelName": "neteasetest",
    "detectType": 0,
    "scFrequency": 5,
    "callbackUrl": "***"  //接收审核任务的地址,详见2.1
}'

返回示例如下:

{
    "code": 200,
    "result": {
        "taskId": "***", //审核任务id,用于后续审核任务的详情查询
        "status": true,
        "dataId": "235979990138017090111639568801012" //网易云信为您自动生成的数据唯一标识。如果您对检测结果有任何疑问,请根据 dataId 咨询技术支持。
    }
}

至此,您的音视频通话即正式进入审核阶段。

步骤四 接收安全审核结果

  1. 实现审核结果接收服务。

    在准备工作中,我们已配置了接收抄送消息的服务器公网地址,安全审核过程中,会将异常行为实时回调到您配置的地址中,您需要在该地址中实现对应审核消息的接收。 PHP 解析抄送内容的相关示例请参见[KB0304] PHP解析网易服务器抄送和回调的Header和Body示例

    在本次演示中,以实现最简单的抄送内容接收及打印为例。

    public String robot(@RequestBody String msg) {
            logger.info(msg);
            System.out.println(msg);
            return "robot";
        }
    

当音视频内容没有违规内容时,不会触发审核抄送。只有在音视频内容有违规问题时,才会触发具体异常详情抄送,具体请参见安全通审核事件

  1. 模拟触发违规内容。

    在进行通话之前,提前配置部分敏感词作为审核过滤条件。

关键词配置.png

在视频通话中,模拟相关的视频内容。

视频通话.png

  1. 接收审核结果。

    触发违规内容后,您配置的接收抄送服务的地址,就能收到该次通话相关的审核结果。以下示例代码展示了视频相关的审核结果,音频也可以进行同步审核。审核结果字段说明请参见 安全通审核事件字段说明

    {
    "data": {
    	"dataId": "235979990138***568801012",
    	"callback": "",
    	"channelName": "neteasetest",
    	"evidences": {
    		"video": {
    			"evidence": {
    				"uid": 12345,
    				"beginTime": 1639569545356,
    				"endTime": 1639569545356,
    				"type": 1,
    				"url": "https://yidun-video.nos-eastchina1.126.net/ur9j7xwis91ejyprqsuilchg04009rez_12345_1639569545374.jpg?            Signature=GR%2FQRk37f8k7ukRVLkeTtZiQWNfRMEx%2BL0uIeogAQ5M%3D&Expires=1642161545&NOSAccessKeyId=7b107844ee8e4f9689d54c726e3273ff"
    			},
    			"labels": [{
    				"subLabels": [{
    					"subLabel": 400017,
    					"rate": 1.0,
    					"details": {
    						"hitInfos": ["好好学习"],
    						"hitLocationInfos": [{
    							"y1": 0.33333334,
    							"x1": 0.20926562,
    							"y2": 0.56666666,
    							"x2": 0.7454219,
    							"hitInfo": "好好学习"
    						}],
    						"imageListInfos": [{
    							"type": 2,
    							"word": "好好学习"
    						}]
    					}
    				}],
    				"level": 2,
    				"rate": 1.0,
    				"label": 400
    			}]
    		}
    	},
    	"censorSource": 2,
    	"channelId": 1344424***7473,
    	"taskId": "ur9j7xwis91ejyprq****009rez",
    	"status": 101
    },
    "eventType": 400
    }
    

步骤五 处理安全审核结果。

1.移除成员。

发现通话存在违规只是安全审核的第一步,接下来需要处理安全审核的结果。在配置安全策略时,您可以根据您具体的业务情况,来辨别审核力度。

针对审核结果,每个业务会有不同的策略,或是在客户端弹出相关提示,或是直接结束该通通话。

云信的音视频通话提供房间管理的相关服务端 API 接口,可以对房间内的成员进行移除,或是对整个房间进行关闭。

以下示例代码以移除违规房间成员为例,服务端移除成员的接口说明请参见移除成员

 curl --location --request POST 'https://logic-dev.netease.im/v3/api/kicklist/members?cname=neteasetest1&uid=12345' \
        --header 'AppKey: ***' \  //请使用您应用的appkey
        --header 'Nonce: ***' \  //随机数,最大长度为 128 个字符。
        --header 'CurTime: 1639555317' \  //当前 Unix 时间戳,即从 197011000 秒开始到现在的秒数。数据类型为 String。
        --header 'CheckSum: ba193e4d4ba3991987eb72afe692095598552b79' \ //计算方式详见:https://doc.yunxin.163.com/docs/jcyOTA0ODM/TA5MjEzNTM?platformId=50326
        --header 'Content-Type: application/json' \
        --data-raw ''

该请求无返回结果,HTTP 200表示请求成功。

2.客户端处理。

客户端会收到被移除房间的回调,以 Web 端为例:
this.client.on('client-banned', (event) => {
      logger.log('peer-leave', event);
      message.error('你已被踢出房间');
     });

被移出房间.png

步骤六 结束审核任务。

完成音视频通话的安全审核后,您需要结束该通话频道的审核任务。具体接口说明请参见 停止安全通审核任务

示例代码如下:

curl --location --request POST 'https://logic-dev.netease.im/livewallsolution/feedback' \
--header 'AppKey: ***' \  //请使用您应用的appkey
--header 'Nonce: ***' \  //随机数,最大长度为 128 个字符。
--header 'CurTime: 1639555317' \  //当前 Unix 时间戳,即从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的秒数。数据类型为 String。
--header 'CheckSum: ba193e4d4ba3991987eb72afe692095598552b79' \ //计算方式详见:https://doc.yunxin.163.com/docs/jcyOTA0ODM/TA5MjEzNTM?platformId=50326
--header 'Content-Type: application/json' \
--data-raw '{
    "realTimeInfoList": [
        {
        "channelName": "neteasetest",
        "status": 100
        }
    ]
}'

返回示例如下:

{
    "code": 200,
    "result": [
        {
            "channelName": "neteasetest",
            "result": 0,
            "taskId": "ur9j7xwis91ejyprqsuilchg04009rez"
        }
    ]
}
此文档是否对你有帮助?
有帮助
我要吐槽
  • 背景介绍
  • 视频讲解
  • 功能介绍
  • 操作流程
  • 功能实现
  • 步骤一 准备工作
  • 步骤二 创建音视频通话
  • 步骤三 创建安全通审核任务
  • 步骤四 接收安全审核结果
  • 步骤五 处理安全审核结果。
  • 步骤六 结束审核任务。