场景说明
在远程教育、秀场直播、视频会议、远程定损、金融双录、在线医疗等应用场景中,考虑取证、质检、审核、存档和回放等需求,常需要将整个视频通话或互动直播过程通过云端切片并送审第三方的情况。
计费说明
功能说明
通过 TRTC 的云端审核功能,您可以将房间中每一个用户的音视频流进行云端切片并送审第三方审核,无需客户端进行处理。
名词解释
云端审核:通过云端切片将音视频内容投递到第三方审核,并获取到审核结果,通过回调的形式返回业务后台。
云端切片:包括音频切片和视频截图两个场景。
音频切片:将房间内的某一个用户的音频流按照一定的时间间隔进行切片处理,切片后为音频片段。
视频截图:将房间内的某一个用户的视频流按照一定的时间间隔进行截图处理,截图后为图片。
文件存储:支持将云端切片后的文件存储到对象存储 COS,AWS S3, 阿里云 OSS。
回调通知:我们支持回调通知的能力,通过配置您的回调域名,云端审核的事件状态会通知到您的回调服务器。
云端审核流程
依据您发起的云端审核请求,以及请求中提供的第三方审核服务商信息(您需要提前开通或购买第三方审核),通过云端审核接口,将云端审核任务中的音视频内容投递到第三方审核服务商进行审核。

如上图所示为单流录制的场景,房间1234里面主播1和主播2都上行了音视频流,假设您订阅了主播1和主播2的音视频流,并设置同时进行视频截图和音频切片审核,后台会分别拉取主播1和主播2的音视频流,并把他们切片成独立的截图文件和音频文件去送审到第三方审核服务商。
目前支持的审核服务商有:腾讯天御、数美、网易易盾。
API 接口和审核调用并发限制
单个接口超时时间为6秒。
单次审核任务最大支持同时订阅的房间内主播数为25个,主播只上行音频也会单独占据一路。
云端审核任务执行流程
启动云端审核(CreateCloudModeration)
通过您的后台服务调用 REST API (CreateCloudModeration)来启动云端审核任务,需要重点关注参数— 任务 ID(TaskId);这个参数是本次审核任务的唯一标识,您需要保存下这个任务 ID 作为后续针对这个审核任务接口操作的输入参数。
1. 发起云端录制任务的接口(CreateCloudModeration)
接口中需要您指定分配录制机器人的进房参数 UserId 和 UserSig(如何获取 UserSig),请不要与您房间内的正常主播或观众使用的 UserId 重复且不可与正在录制中的房间内指定的录制机器人 UserId 一致,否则会导致录制任务失败。
2. 指定审核用户(SubscribeModerationUserIds)
3. 指定转存位置(ModerationStorageParams)
格式:图片切片文件为png, 音频切片文件为ogg
4. 指定审核服务商(ModerationSupplierParam)
查询审核任务状态 (DescribeCloudModeration)
如果需要,您可以调用该接口查询审核任务的状态。
修改审核任务状态(ModifyCloudModeration)
停止审核任务(DeleteCloudModeration)
成功开启云端审核任务后,可以使用此接口来停止送审。
云端审核回调
我们针对云端审核功能提供了多种的回调事件,帮助您及时了解审核任务的处理和完成情况
审核回调地址配置

回调接口
您可以提供一个接收回调的 HTTP/HTTPS 服务网关来订阅回调消息。当相关事件发生时,云审核系统会回调事件通知到您的消息接收服务器。
事件回调消息格式:HTTP/HTTPS POST 请求发送给您的服务器,其中:
字符编码格式:UTF-8。
请求:body 格式为 JSON。
应答:HTTP STATUS CODE = 200,服务端忽略应答包具体内容,为了协议友好,建议您的应答内容携带 JSON: {"code":0}。
审核回调事件
参数说明
事件回调消息的 header 中包含以下字段:
字段名 | 值 |
Content-Type | application/json |
Sign | 签名值 |
SdkAppId | SDK 应用 ID 值 |
事件回调消息的 body 中包含以下字段:
字段名 | 类型 | 含义 |
EventGroupId | Number | 事件组 ID, 云端审核固定为11。 |
EventType | Number | 回调通知的事件类型。 |
CallbackTs | Number | 事件回调服务器向您的服务器发出回调请求的 Unix 时间戳,单位为毫秒。 |
EventInfo | JSON Object | 事件信息。 |
事件类型说明
字段名 | 类型 | 含义 |
EVENT_TYPE_CLOUD_Moderation_START | 1101 | 云端审核模块启动。 |
EVENT_TYPE_CLOUD_Moderation_STOP | 1102 | 云端审核模块退出。 |
EVENT_TYPE_CLOUD_Moderation_SEND_START | 1103 | 云端审核开始送审。 |
EVENT_TYPE_CLOUD_Moderation_TASK_INFO | 1104 | 审核结果回调。 |
EVENT_TYPE_CLOUD_Moderation_SEND_STOP | 1105 | 云端审核结束送审。 |
EVENT_TYPE_CLOUD_Moderation_UPLOAD_ERROR | 1106 | 云端审核投递模块发生错误。 |
事件信息说明
字段名 | 类型 | 含义 |
RoomId | String/Number | 房间名(类型与客户端房间号类型一致)。 |
EventTs | Number | 事件发生的 Unix 时间戳,单位为秒 (不建议使用该字段,建议使用 EventMsTs)。 |
EventMsTs | Number | 事件发生的 Unix 时间戳,单位为毫秒。 |
UserId | String | 审核机器人的用户 ID。 |
TaskId | String | 审核任务 ID,一次云端审核任务唯一的 ID。 |
Payload | JsonObject | 根据不同事件类型定义不同。 |
事件类型为1101 EVENT_TYPE_CLOUD_Moderation_START 时 Payload 的定义:
字段名 | 类型 | 含义 |
Status | Number | 0:代表审核模块启动成功。 1:代表审核模块启动失败。 |
{"EventGroupId": 11,"EventType": 1101,"CallbackTs": 1726125338219,"EventInfo": {"RoomId": "960025","EventTs": 1726125338,"EventMsTs": 1726125338219,"UserId": "inspect","TaskId": "-npVqpdU7sBobiK1iskE3BwlLIebCMrbKUbnL4K-rO+8oZWQndib9uvO4Deq9P1Na+sXGNGNuAE.""Payload": {"Status": 0}}}
事件类型为1102 EVENT_TYPE_CLOUD_Moderation_STOP 时 Payload 的定义:
字段名 | 类型 | 含义 |
LeaveCode | Number | 0:代表审核模块正常调用停止审核退出。 1:审核机器人被客户踢出房间。 2:客户解散房间。 3:服务器将审核机器人踢出。 4:服务器解散房间。 99:代表房间内除了审核机器人没有其他用户流,超过指定时间退出。 100:房间超时退出。 101:同一用户重复进入相同房间导致机器人退出。 |
{"EventGroupId": 11,"EventType": 1102,"CallbackTs": 1729601782073,"EventInfo": {"RoomId": "975626","EventTs": "1729601782","EventMsTs": 1729601782073,"UserId": "SliceTaskDuration1-partner-robot","TaskId": "-nHRjqhU7gTG0UIL-MquzG8D0Q+wehTbVTeeIIK-rO+8oZWQndibtueIpQ8A0F3n9PEVRk0rngE.","Payload": {"LeaveCode": 99}}}
事件类型为1103 EVENT_TYPE_CLOUD_Moderation_SEND_START 时 Payload 的定义:
字段名 | 类型 | 含义 |
Status | Number | 0:代表开始送审文件。 |
{"EventGroupId": 11,"EventType": 1103,"CallbackTs": 1726750023538,"EventInfo": {"RoomId": "295210","EventTs": 1726750023,"EventMsTs": 1726750023538,"UserId": "inspect","TaskId": "-nHwXIdU7mJvL22pFsXZ-v7OgEzq1OzbNXe9L4K-4pycoZWQndib3ZfzqN7Wq+AdiPLMBLxd0gE.","Payload": {"Status": 0}}}
审核结果
事件类型为1104 EVENT_TYPE_CLOUD_Moderation_FILE_INFO 时 Payload 的定义:
字段名 | 类型 | 含义 |
DataId | String | 审核任务 ID。 |
RequestId | String | 第三方审核供应商请求 ID。 |
MediaType | Number | 1:语音。 2:图片。 |
Suggest | Number | 0:建议通过。 1 :建议人工复审。 2:建议屏蔽。 |
Label | String | Normal:正常文本 Ad:广告 Porn:色情 Abuse:谩骂 Illegal: 违禁 Polity: 涉政 Terror: 暴恐 Custom: 自定义 |
Image | String | 用户桶图片路径。 |
Audio | String | 用户桶音频路径。 |
AudioText | String | 音频识别文本。 |
CheckDetail | 对象 | 审核详细结果。 |
Keywords | []String | 关键词。 |
Score | Number | 置信度分数。 |
AudioSegments | 对象 | 第三方审核商音频切片位置信息。 |
ImageLocation | 对象 | 第三方审核商图片命中坐标信息。 |
音频审核结果示例:
{"EventGroupId": 11,"EventType": 1104,"CallbackTs": 1726750309161,"EventInfo": {"RoomId": "963239","EventTs": 1735872251,"EventMsTs": 1735872251524,"UserId": "TRTCModerationCase2-user0","StreamerUserId": "SliceCustomUploadCase6-user0","TaskId": "-m9lm+lU7tOlL2mFgsPuzHeyNThbhZzbJlKQI4K-raO8oZWQndibARGYcSDohF0Zfgo7RNCuGQE.","Payload": {"DataId": "547512114953106866","RequestId": "","MediaType": 1,"Suggest": 2,"Label": "Polity","Image": "","Rate": 100,"Audio": "https://x.xx.com/-m9lm+lU7tOlL2mFgsPuzHeyNThbhZzbJlKQI4K-raO8oZWQndibARGYcSDohF0Zfgo7RNCuGQE./547512114835666354.ogg","AudioText": "XXX认真听取讲解,观看反映延安时期重大战役运筹指挥情况的历史图表,感悟党中央和中央军委的领导智慧和艺术。","CheckDetail": [{"Label": "Polity","Suggest": 2,"Keywords": ["XXX"],"Score": 100,"Desc": "","AudioSegments": {},"ImageLocation": {}}]}}}
图片审核结果示例:
{"EventGroupId": 11,"EventType": 1104,"CallbackTs": 1726750309161,"EventInfo": {"RoomId": "963239","EventTs": 1735872251,"EventMsTs": 1735872251524,"UserId": "TRTCModerationCase2-user0","StreamerUserId": "SliceCustomUploadCase6-user0","TaskId": "-m9lm+lU7tOlL2mFgsPuzHeyNThbhZzbJlKQI4K-raO8oZWQndibARGYcSDohF0Zfgo7RNCuGQE.","Payload": {"DataId": "554678038156038407","RequestId": "a82e0175-65ed-46b5-a656-45814aea1c60","MediaType": 2,"Suggest": 2,"Label": "Ad","Image": "https://trtcauto-sg-1311572968.cos.ap-singapore.myqcloud.com/prefix1/prefix2/-nHlf1xU7tsdRVBjLsog0ZX9T62DtVjbNguMJYK-58aNM6KipeDPAfrKt1aejC8ipMaphfYxAQ../TianyuModerationCase3-user1/images/20005067_963715_TianyuModerationCase3-user1_20250221211113.png","ImageOcr": "活字文化 Moveable TVo 我永远不能再回家的疼痛;","Rate": 90,"Audio": "","AudioText": "","CheckDetail": [{"Scene": "Ad","Label": "Normal","Suggest": 2,"Keywords": [],"Score": 90,"AudioSegments": {},"ImageLocation": {}}]}}}
事件类型为1105 EVENT_TYPE_CLOUD_Moderation_SEND_STOP 时 Payload 的定义:
字段名 | 类型 | 含义 |
Status | Number | 结束送审。 |
{"EventGroupId": 11,"EventType": 1105,"CallbackTs": 1726751347072,"EventInfo": {"RoomId": "295211","EventTs": 1726751347,"EventMsTs": 1726751347072,"UserId": "inspect","TaskId": "-nHwXIdU7jx6C00Nt8Vr+3h4GwYdP7zbeHi9L4K-4pycoZWQndibqFeEaV4LvjFqSuQvaAkrNQE.","Payload": {"Status": 0}}}
事件类型为1106 EVENT_TYPE_CLOUD_Moderation_SEND_ERROR 时 Payload 的定义:
字段名 | 类型 | 含义 |
Code | Number | COS 或者第三方存储错误码。 |
Message | String | COS 或者第三方存储错误消息。 |
{"EventGroupId": 11,"EventType": 1106,"CallbackTs": 1726751347072,"EventInfo": {"RoomId": "295211","EventTs": 1726751347,"EventMsTs": 1726751347072,"UserId": "inspect","TaskId": "-nHwXIdU7jx6C00Nt8Vr+3h4GwYdP7zbeHi9L4K-4pycoZWQndibqFeEaV4LvjFqSuQvaAkrNQE.","Payload": {"Code": 10002,"Message": "BadRequest"}}}
审核文件管理
发起云端审核云 API 请求时,可以通过 ModerationParams.SaveModerationFile 参数配置控制是否转存审核命中文件。后台会指定需要转存的审核命中文件上传到您指定的云存储平台(对象存储 COS,AWS S3或者 阿里云 OSS)。
转存文件命名说明
音频切片默认命名为:
{您的桶名称}/{taskId}/{userId}/audios/{sdkappid}_{roomId}_{userid}_{UTC时间}.ogg
视频截图文件默认命名为:
{您的桶名称}/{taskId}/{userId}/images/{sdkappid}_{roomId}_{userid}_{UTC时间}.png
字段含义说明
字段 | 含义 |
<taskId> | 审核的任务 ID。 |
<sdkappid> | 审核任务的 SdkAppId。 |
<roomId> | 审核的房间号。 |
<userid> | 主播用户 ID。 |
<UTC时间> | 当前时间字符串 例如:20250106143143。 |