有奖捉虫:行业应用 & 管理与支持文档专题 HOT
以下文档用于介绍自定义手动审核的集成方式,需要您来控制审核任务的发起与结束。如果您希望使用的是全局自动审核功能,只需在控制台完成配置即可,具体请参见 全局自动审核
注意
本文介绍如何针对某个应用发起手动内容审核任务,手动审核不可与全局自动审核同时发起,请确认当前应用在控制台的全局自动审核开关已关闭,关闭方式请见审核配置说明

审核接入流程

接入流程图





接入步骤

1. 确认审核机器人进房参数:
用户通过 TRTC 提供的 SDK 创建房间发起实时音视频后,会获取到 sdk_app_id(TRTC 控制台创建应用时的应用 ID),room_id(创建的房间号),指定进房审核用户user_id(作为审核机器人进房拉流,不能与当前房间内正常用户的user_id相同),根据 user_id 获取参数 user_sig(获取方式请参见 user_sig 相关)。
2. 拼接TRTC审核URL:
将上一步获取到的 sdk_app_id、room_id、user_id 和 user_sig 拼装成 TRTC 审核 URL,URL 格式如下:
trtc://trtc.tencentcloudapi.com/moderation?sdk_app_id=xxxx&room_id=xxxx&user_id=xxxx&user_sig=xxxx
注意
URL 中的每个参数值在拼装前需要先 escape 一下,防止有特殊字符无法解析,特别是 user_sig。
本文档涉及的 TRTC 相关参数:sdk_app_id、user_id、user_sig、room_id,分别对应您接入 TRTC SDK 中 SdkAppId、UserId、UserSig、RoomId。
参数名称
必选
描述
sdk_app_id
TRTC 控制台创建应用时的应用 ID。
room_id
创建的房间号,TRTC 的 room_id 有数值和字符串两种形式,默认是数值,如果为字符串的 room_id,则需要将 room_id_type 设置为 string。
注:room_id长度需小于16字符。
user_id
用户 ID,手动指定一个内容审核用户user_id(该审核用户仅作为审核机器人进房拉流,不能与当前房间内正常用户的userid相同)。
user_sig
user_sig 是基于 sdk_app_id 和 user_id 计算出的安全签名。
mix
取值时 true 为混流审核,false 为单流审核。不填默认是混流审核。(混流审核下违规回调无法获取具体的违规用户,适用于房间维度的合规审核场景,单流审核可通过回调确定具体的违规 user_id。)
room_id_type
房间类型,默认可不传,可传入值为:string/number。
3. 调用审核任务创建接口:
根据您的审核需求,如果需要对房间内的音、视频流进行审核,通过以下创建视频审核任务接口,发起该房间的音、视频内容安全审核。
参数名称
必选
类型
描述
Action
String
公共参数,本接口取值:CreateVideoModerationTask。
Version
String
公共参数,本接口取值:2020-12-29。
Region
String
公共参数,本接口不需要传递此参数。
Type
String
该参数用于传入审核任务的任务类型,取值:VIDEO(点播视频),LIVE_VIDEO(直播视频),TRTC 审核场景请传入 LIVE_VIDEO(直播视频)
Tasks.N
Array of TaskInput
该字段表示输入的音频审核任务信息(即上述拼接的 TRTC 审核任务 URL),具体输入内容请参见 TaskInput 数据结构的详细描述。 备注:最多同时可创建10个任务
BizType
String
该字段表示策略的具体编号,用于接口调度,在内容安全控制台中可配置。若不传入Biztype参数(留空),则代表采用默认的识别策略;传入则会在审核时根据业务场景采取不同的审核策略。n备注:Biztype仅为数字、字母与下划线的组合,长度为3-32个字符;不同Biztype关联不同的业务场景与识别能力策略,调用前请确认正确的Biztype。
Seed
String
可选参数,该字段表示回调签名的 key 信息,用于保证数据的安全性。 签名方法为在返回的 HTTP 头部添加 X-Signature 的字段,值为: seed + body 的 SHA256 编码和 Hex 字符串,在收到回调数据后,可以根据返回的body,用 sha256(seed + body),计算出 X-Signature 进行验证。 具体使用实例请参见 回调签名示例
CallbackUrl
String
可选参数,该字段表示接受审核信息回调的地址,格式为 URL 链接默认格式。配置成功后,审核过程中产生的违规音频片段将通过此接口发送。回调返回内容格式请参见 回调签名示例
备注:音频默认截取时长为15秒,视频截帧默认为5秒截取一张图片;若用户自行配置截取间隔,则按照用户配置返回相应片段。
Priority
Integer
可选参数,该参数用于传入审核任务的优先级。当您有多个视频审核任务排队时,可以根据这个参数控制排队优先级,用于处理插队等逻辑;该参数默认值为0。
若仅需对房间内的音频流进行审核,可通过创建音频审核任务接口,发起该房间的音频内容安全审核。
参数名称
必选
类型
描述
Action
String
公共参数,本接口取值:CreateAudioModerationTask。
Version
String
公共参数,本接口取值:2020-12-29。
Region
String
公共参数,本接口不需要传递此参数。
Tasks.N
Array of TaskInput
该字段表示输入的音频审核任务信息(即上述拼接的TRTC审核任务URL),具体输入内容请参见 TaskInput 数据结构的详细描述。 备注:最多同时可创建10个任务。
Type
String
该字段表示输入的音频审核类型,取值为:AUDIO(点播音频)和 LIVE_AUDIO(直播音频),TRTC审核场景请传入LIVE_AUDIO(直播音频)。
BizType
String
该字段表示策略的具体编号,用于接口调度,在内容安全控制台中可配置。若不传入 Biztype 参数(留空),则代表采用默认的识别策略;传入则会在审核时根据业务场景采取不同的审核策略。备注:Biztype 仅为数字、字母与下划线的组合,长度为3个-32个字符;不同 Biztype 关联不同的业务场景与识别能力策略,调用前请确认正确的 Biztype。
Seed
String
可选参数,该字段表示回调签名的 key 信息,用于保证数据的安全性。 签名方法为在返回的 HTTP 头部添加 X-Signature 的字段,值为: seed + body 的 SHA256 编码和 Hex 字符串,在收到回调数据后,可以根据返回的body,用 sha256(seed + body),计算出 X-Signature 进行验证。 具体使用实例请参见 回调签名示例
CallbackUrl
String
可选参数,该字段表示接受审核信息回调的地址,格式为 URL 链接默认格式。配置成功后,审核过程中产生的违规音频片段将通过此接口发送。回调返回内容格式请参见 回调签名示例
以上接口需注意以下几点:
BizTypen用户的审核策略,可以通过控制台上的 策略管理 根据不同的需求创建不同的审核策略,在开通服务时,会自动创建一个 BizType 为“default”的审核策略,测试时,可使用该 BizType 传入。n


Typen根据您调用审核任务的类型进行传入,音视频审核任务接口(CreateVideoModerationTask)该字段传入LIVE_VIDEO,音频审核任务接口(CreateAudioModerationTask)该字段传入LIVE_AUDIO
CallbackUrln该地址用于用户接口直播过程中和直播结束的审核结果,可以在控制台配置界面中设置,也可以通过接口传入。回调格式同 查询任务详情接口 的输出参数。
Tasks.N.Input.Urln填入 第2步 拼装的 TRTC 审核 URL。输入示例:n


4. 创建审核任务成功,腾讯云内容安全审核服务会返回 TaskId、TaskId 作为内容审核针对该房间审核的唯一ID。
5. 在审核过程中,用户的回调服务器会持续接收到内容安全审核服务的审核结果,针对 TRTC 在直播过程中每个用户的音频切片和图片截帧的审核结果,用户可以根据该结果决定是否封禁直播间,或者是针对直播间发出警告。
视频审核任务回调字段说明请见 查看视频任务详情 中的输出参数,音频审核任务回调字段说明请见 查看音频任务详情 中的输出参数,TRTC 回调的片段会存储在 cos 上名称为:tianyu-content-moderation-{账号appid}的存储桶中,文件名为:
segment-/trtc/{sdk_app_id}/screenshot_{room_id}_{user_id}{timestamp}.jpg(图片格式)
segment-trtc/{sdk_app_id}/audio_{room_id}_{user_id}_{timestamp}.mp3(音频格式)
说明:
上述信息存储在审核回调的ImageSegments/AudioSegments字段中,您可以用来确认审核的sdk_app_id、room_id、和user_id(混流审核下的 user_id 统一为 mixer,混流审核不支持区分具体的用户user_id)。
6. 在直播结束后,用户需要调用结束审核接口(传入创建审核时的 TaskId),关闭直播间审核。
7. 内容安全审核服务在接收到结束审核请求后,停止拉取该直播间的数据流,并根据审核策略,推导出该直播间的最终审核结果,同时发送审核结束的回调信息给用户。
注意
直播内容安全审核过程中,如果出现直播流中断,或者持续拉不到数据流,会进行拉流重试,在一段时间内(不同的错误码重试逻辑会有差异)拉取不到数据流,会认为该直播间已经关闭,此时会发送审核结束回调给用户。用户需要在接收到回调后判断该直播间是否为关闭状态,如果不为关闭状态,需要重新发起审核,以此保证直播间不会漏过)

常见问题

1. TRTC 进行内容安全审核传入的 user_id 用户是否可以看见?

不可见,内容安全是以观众身份从TRTC拉流,对于用户端是看不到该user_id的。

2. 内容安全拉取 TRTC 的数据流是否需要收费?

内容安全是以观众身份从 TRTC 拉取数据流进行审核的,TRTC 默认计费方式按订阅时长(拉流)计费,所以这里会产生费用,具体的收费请参见 音视频计费时长说明
注意
创建审核任务的 user_id 不能同房间内的任何一个 user_id 相同,否则会导致审核失败。
TRTC room_id 的限制是 uint,房间号取值区间为1 - 4294967295,由开发者自行维护和分配。

3. 内容安全是以观众身份从 TRTC 拉流,那这个内容审核用户,是按照正常创建用户创建吗?

是的,我们是用这个用户进入房间拉数据的。他也是一个正常的用户。

4. 对 TRTC 的音频、视频做内容审核,分别需要多久才能返回审核结果?

片段会即时返回。音频是 0.2 的实时率,图片会在拿到数据之后 1s 内返回。

5. 什么是 user_sig?

具体请参见 user_sig 相关

6. TRTC 怎么校验生成的 user_sig 是否正确?进房报错 -3319、-3320 错误怎么排查?

可登录实时音视频控制台,选择 开发辅助 > user_sig 生成&校验 校验 user_sig。

7. 多人语聊房中,多路流,怎么判断谁违规了吗?

目前只能通过我们返回的回调上的地址去区分,我们回调的片段会存储在 cos 上面,文件名是 trtc_[room_id]_[user_id]_timestamp 的格式。
需要注意的是,混流审核下无法区分违规用户的 user_id,如需识别具体的违规用户,需要开启单流审核,以 user_id 区分用户。图片和音频在 COS 中的存储文件名如下:
图片格式:trtc/{{sdk_app_id}}/screenshot_{{room_id}}_{{user_id}}_{{timestamp}}.jpg
音频格式:trtc/{{sdk_app_id}}/audio_{{room_id}}_{{user_id}}_{{timestamp}}.mp3
注意:
user_id 为主播号。

8. 对于拼装的 TRTC 审核 URL 有什么需要注意的点?

由于 user_sig 中包含有特殊符号,拼装成 url 前要先进行 escape 才能放到 URL 中。
说明
更多问题,请参见 TRTC 常见问题文档

附录

视频审核服务提供以下四个审核接口,通过单击链接查看详细接口文档:
音频审核服务提供以下四个审核接口,通过单击链接查看详细接口文档: