云信小课堂|如何实现音视频安全检测?
Vol. 9
泛娱乐类音视频聊天场景中,充斥着各种不可控的风险因素,例如色情、暴恐和涉政信息等。随着国家监管的日趋严格,各平台需要对平台的音视频内容进行管控,自行处理音视频内容审核需要投入大量人力进行甄别。
融合通信云专家网易云信融合网易易盾的内容审核能力,为开发者提供实时音视频「安全通」(内容安全审核)服务,对音视频内容进行有效的判别和筛选,降低人力投入。
本次云信小课堂,我们为大家带来实时音视频「安全通」的快速接入指南。
视频讲解
10 分钟视频,手把手教你接入
功能解析
实时音视频「安全通」(内容安全审核)服务(以下简称「安全通」),是基于实时音视频通话的内容审核及处理功能。我们默认开发者已经实现了基础的音视频通话功能(如您还未开始集成,可参考往期《云信小课堂|如何实现音视频通话》)。
「安全通」的基础功能包含:
创建「安全通」审核任务
查询审核视频截图
查询审核音频断句
停止「安全通」审核任务
接收安全审核结果
处理安全审核结果
基于实时音视频通话内容,实现全流程的“审-查-禁”服务功能。
功能实现
以下内容为大家介绍如何基于网易云信音视频通话 2.0 SDK 及安全通 API 快速实现音视频通话安全检测功能,基本步骤如下:
Step 1 开始准备
1、登录云信控制台创建应用并申请开通音视频 2.0 及「安全通」相关服务。详细操作步骤可参考:
《音视频 2.0 接入流程》:
https://doc.yunxin.163.com/docs/jcyOTA0ODM/DkyMDM2Mzk?platformId=50002
《开通「安全通」服务》:
https://doc.yunxin.163.com/docs/jcyOTA0ODM/zMzMTYzNDM?platformId=50326
2、准备接收消息抄送的服务器公网地址。审核结果会以消息抄送的方式发送至您预留的抄送地址,请在开通服务前准备抄送地址,并保证抄送地址长期有效。配置方式如下图所示:
3、准备音视频通话开发环境,安全通服务支持音视频 2.0 全终端接入检测,无论您使用的是什么平台,接入流程一致。
4、配置内容检测相关规则,在「安全通」功能页面,进入策略配置页面。在此您可以配置您希望的安全检测策略。
Step 2 创建音视频通话
创建房间(可选)
通过服务端 API 进行音视频通话房间创建
https://doc.yunxin.163.com/docs/jcyOTA0ODM/jg3NjcyNTE?platformId=50326
传入指定的房间名及用户 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.0 通话亦支持未创建客户端直接加入音视频房间。
建立音视频通话
为了方便演示,我们使用 Web 端进行音视频通话(我们默认开发者已经实现了基础的音视频通话功能),传入与创建房间时相同的房间名,建立音视频通话。
this.client.join({channelName: "neteasetest", //房间名uid: 12345, //用户idtoken: '' //鉴权token,详见:https://doc.yunxin.163.com/docs/jcyOTA0ODM/TQ0MTI2ODQ?platformId=50002});
进入房间成功后,通话就正式开始咯。
Step 3 创建「安全通」审核任务
通话建立完成后,即可通过服务端 API 开启对应房间的审核任务:
https://doc.yunxin.163.com/docs/jcyOTA0ODM/DA3OTIwNzg?platformId=50326
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 咨询技术支持。}
}
至此,您的音视频通话即正式进入审核阶段。
Step 4 接收安全审核结果
实现审核结果接收服务
在之前,我们已经配置了接收消息抄送的服务器公网地址,安全审核过程中,会将异常行为实时回调到您配置的地址中,您需要在该地址中实现对应审核消息的接收,我们提供了 PHP 解析抄送内容的相关示例:
https://faq.yunxin.163.com/#KB0304
在本次演示中,我们只进行最简单的抄送内容接收及打印。
public String robot(@RequestBody String msg) {logger.info(msg);System.out.println(msg);return "robot";}
正常情况,审核抄送不会触发,只有在有问题的情况下,会触发具体异常详情抄送,详见:
https://doc.yunxin.163.com/docs/jcyOTA0ODM/jYyMzk5Nzc?platformId=50326
触发违规内容
在进行通话之前,我们提前配置了部分敏感词作为审核过滤条件。
接下来,我们在视频通话中,模拟相关的视频内容:
审核结果接收
最终,您配置的接受抄送服务的地址,就能收到该次通话相关的审核结果了!这里只展示了视频相关的审核结果,音频也可以进行同步审核。审核结果字段释义详见:
https://doc.yunxin.163.com/docs/jcyOTA0ODM/jYyMzk5Nzc?platformId=50326#400%20%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91%E5%AE%89%E5%85%A8%E9%80%9A%E5%AE%A1%E6%A0%B8%E6%8A%84%E9%80%81
{"data": {"dataId": "235979990138017090111639568801012","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": 1344424603797473,"taskId": "ur9j7xwis91ejyprqsuilchg04009rez","status": 101},"eventType": 400
}
Step 5 处理安全审核结果
移出成员
发现通话存在违规只是安全审核的第一步,接下来需要处理安全审核的结果。在配置安全策略时,您可以根据您具体的业务情况,来辨别审核力度。
针对审核结果,每个业务会有不同的策略,或是在客户端弹出相关提示,或是直接结束该通通话。云信的音视频通话提供房间管理的相关服务端 API 接口,可以对房间内的成员进行移除,或是对整个房间进行关闭。以下以移除违规房间成员为例,服务端移出成员接口:
https://doc.yunxin.163.com/docs/jcyOTA0ODM/TA5MTExNjg?platformId=50326
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 时间戳,即从 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 ''
该请求无返回结果,HTTP 200 即请求成功。
客户端处理
之后客户端即会收到被移除房间的回调,以 Web 端为例:
this.client.on('client-banned', (event) => {logger.log('peer-leave', event);message.error('你已被踢出房间');});
至此,音视频通话的安全审核即已完成”审-查-禁“的一体化操作。
Step 6 结束审核任务
最终我们需要结束该通话频道的审核任务
https://doc.yunxin.163.com/docs/jcyOTA0ODM/Dg5NzQ1MjM?platformId=50326
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"}]
}
总 结
以上是网易云信实时音视频「安全通」的快速接入指南的详细解说,按照如上步骤就可以轻松完成。
音视频聊天场景的日益增加意味着各平台不仅要管控,还需要大量的人力成本去审核平台的音视频内容,而网易云信为开发者提供实时音视频「安全通」(内容安全审核)服务,对音视频内容进行有效的判别和筛选,降低人力投入。
云信小课堂推荐阅读
第一期:如何实现音视频通话
第二期:5步构建本土「Clubhouse」
第三期:5分钟实现安卓端PK连麦场景
第四期:5分钟快速实现iOS端PK连麦场景
第五期:从0搭建在线聊天室,只需4步!
第六期:搭建应用级别在线聊天室,7步就够
第七期:聊天室内容审核很头疼?3 步解决
第八期:简单四步,快速搭建协同办公系统
关于网易云信
网易云信是集网易 24 年 IM 以及音视频技术打造的融合通信云服务专家,稳定易用的通信与视频 PaaS 平台。
提供融合通信与视频的核心能力与组件,包含 IM 即时通讯、5G 消息平台、一键登录、信令、短信与号码隐私保护等通信服务,音视频通话、直播、点播、互动直播与互动白板等音视频服务,视频会议等组件服务。
网易云信服务于网易云音乐、好未来、新东方、科大讯飞、南京银行等各行各业客户,已有 100w+ 企业开发者接入云信服务。
云信小课堂|如何实现音视频安全检测?相关推荐
- 云信小课堂 | 如何管理音视频的通话状态?
2022.12 业务背景 用户在实际使用云信音视频通话 2.0 服务中,常常会遇到弱网,掉线等情况,对于这类情况,云信 SDK 提供了自动重连的相关策略,业务层不需要单独处理重连,只需要监听并做好 ...
- 云信小课堂|如何实现音视频通话
大家好,欢迎大家来到「云信小课堂 」. 本栏目致力于解答有关IM和音视频的一切问题,产品特点.使用场景.技术名词.接入指南.功能实现......欢迎大家留言提问,我们每节课会选取大家感兴趣的问题进行解 ...
- 云信小课堂丨简单四步,快速搭建协同办公系统!
Vol. 8 企业作为社会分工参与的主体,在自身发展以及内部协作中,势必会涉及到各类自有技术和商业信息的互动与交流,而这类信息由于有着高度的保密性和隐私性,所以如微信.QQ 等通用的即时通讯工具很难满 ...
- 云信小课堂 | 聊天室内容审核很头疼? 3 步解决!
Vol. 7 随着 5G . AI 等颠覆性的技术创新,各类产品的互动性和沉浸感都在快速提升.强互动作为产品快速发展的生命力,也带来了一定程度的安全和监管风险,对通信.安全等技术和服务提出了更高要求. ...
- 云信小课堂|搭建应用级别在线聊天室,7步就够了!
Vol. 6 从2000年至今,聊天室一直活跃在人们的各种生活场景中,目前广泛运用于超级小班课.互动大班课.连麦开黑.主播 PK 等场景,还具备文本.表情.点赞.撒花等互动方式,架起沟通桥梁的同时,玩 ...
- 云信小课堂|5分钟快速实现iOS端PK连麦场景
Vol. 4 2021年开年,音频社交风靡互联网,语音社交再成风口,直播连麦开启社交新赛道.在实时通信技术不断革新的现状下,直播平台需要不断探索新的方式以满足用户日益增长的需求,直播连麦就是在此背景下 ...
- 云信小课堂|5分钟快速实现安卓端PK连麦场景
Vol. 3 2021年开年,音频社交风靡互联网,语音社交再成风口,直播连麦开启社交新赛道.在实时通信技术不断革新的现状下,直播平台需要不断探索新的方式以满足用户日益增长的需求,直播连麦就是在此背景下 ...
- 云信小课堂 | Android 登录最佳实践
Vol.10 简介 登录对于 IM 产品来说是比较重要的一个模块,关系着后续功能业务的顺利进行.开发者在集成 NIMSDK 的时候,对登录接口选择,以及登录状态处理不当的时候,会引起一些不必要的问 ...
- 融合通信常见问题3月刊 | 云信小课堂
2022.03 「融合通信常见问题」月刊将在每月末与大家见面,该月刊主要包括错题集.知识加油站.技术加餐三大板块,汇集实践过程中的易错问题和解题思路,分享融合通信领域的前沿资讯和技术干货,为您的开发提 ...
最新文章
- C#双面打印解决方法(打印word\excel\图片)
- 分享3个好用到爆的 Python 模块,点赞收藏
- 刷新记录,算法开源!字节跳动获人体姿态估计竞赛双冠 | CVPR 2019
- zabbix加入TCP连接数及状态的监控
- 题目1015:还是A+B
- avogadro_Avogadro
- 印发 指南 通知_通知设计的综合指南
- 使用Spock Mocks进行Grails 3.3集成测试
- magic_quotes_gpc合magic_quotes_runtime的区别!
- python接口自动化(二十八)--html测试 报告——下(详解)
- 用FileInputStream和FileOutPutStream读写文件
- .net c#购物车模块分析
- UTF-8 Unicode ANSI网页编码的区别
- matlab工作区导入多个文件,MATLAB可以直接把Excel文件中的数据导入工作区中
- 计算机专业文书范文,美国留学文书技巧-美国计算机专业博士的申请个人陈述范文...
- 桌面虚拟化 VMware Horizon View 7 安装部署指南 云办公系统安装部署
- Ubuntu16.04安装搜狗中文输入法
- 在html中怎么加边框,HTML怎么加边框
- association的使用
- unity3d场景导入webgl/three.js
热门文章
- 凯西·牛顿(Casey Newton)即将离任
- 记事中快速加当前日期时间
- gpd linux内核,linux内核驱动ZLG7290芯片
- CodeVIO:基于可学习优化密集深度的视觉惯性里程计(ICRA2021)
- 计算机D盘无法读取,电脑d盘打不开怎么办_解决电脑d盘无法打开的方法
- 基于PHP+MySQL小区快递自助取件系统的设计与实现
- loadrunner没有 demo_scenario.lrs
- mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...
- 这些年我们还在使用的国内国外域名注册商
- 雄岸基金战略投资 Filenet,共建分布式存储新生态