该文提供 RTC 智能视频审核 RESTful API 的详细信息。
RTC 智能视频审核 RESTful API 仅支持 HTTPS 协议。使用 RESTful API 前,你需要通过 HTTP 基本认证。
所有的请求都发送给域名:api.agora.io
。
所有的请求 URL 和请求包体内容都是区分大小写的。
一般进行审核的步骤如下:
acquire
请求获取一个 resource ID 用于开启 RTC 智能视频审核。start
开始审核。stop
停止审核。在整个过程中可以通过 query
请求查询审核的状态。 如果审核结果不符合预期,你可以通过 feedback 请求进行反馈。
在开始审核之前,你需要调用该方法获取一个 resource ID,用于开启 RTC 智能视频审核。
一个 resource ID 只能用于一次审核。
每个 App ID 每秒钟的请求数限制为 10 次。如需提高此限制,请联系 support@agora.io。
调用该方法成功后,你可以从 HTTP 响应包体中的 resourceId
字段得到一个 resource ID。这个 resource ID 的时效为 5 分钟,你需要在 5 分钟内用这个 resource ID 去调用开始审核的 API。
该 API 需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
appid |
String | 你的项目使用的 App ID。必须使用和待审核的频道相同的 App ID。 |
该 API 需要在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
cname |
String | 待审核的频道名。 |
uid |
String | 字符串内容为 RTC 智能视频审核在频道内使用的用户 ID,32 位无符号整数,例如"527841" 。需满足以下条件: |
clientRequest |
JSON | 客户请求参数,包含 resourceExpiredHour 字段。resourceExpiredHour 为 Number 类型,单位为小时,用于设置 RTC 智能视频审核 RESTful API 的调用时效,从成功开启审核并获得 sid (审核 ID)后开始计算。超时后,你将无法调用 query 和 stop 方法。resourceExpiredHour 需大于等于 1 , 且小于等于 720 ,默认值为 72 。 |
acquire
请求示例https://api.agora.io/v1/apps/<yourappid>/cloud_recording/acquire
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest":{
"resourceExpiredHour": 24
}
}
acquire
响应示例"Code": 200,
"Body":
{
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG"
}
code
:Number 类型,响应状态码。resourceId
:String 类型, RTC 智能视频审核的 resource ID,使用这个 resource ID 可以开始一段审核。这个 resource ID 的有效期为 5 分钟,超时需要重新请求。获取 resource ID 后,调用该方法开始审核。当你成功调用 start
方法后,RTC 智能视频审核会执行如下操作:
recordingConfig
)订阅视频流captureInterval
)对视频流定期截图callbackAddr
)如果你设置了将审核内容上传至第三方云存储,即将 combinationPolicy
设置为 "storage_and_moderation"
,同时设置 storageConfig
,RTC 智能视频审核会在截图后将截图文件实时上传到第三方云存储。
每个 APP ID 每秒钟的请求数限制为 10 次。
该 API 需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
appid |
String | 你的项目使用的 App ID。必须使用和待审核的频道相同的 App ID。 |
resourceid |
String | 通过 acquire 请求获取的 resource ID。 |
mode |
String | 审核模式,目前只支持单流模式 (individual )。单流模式下,对频道内每个 UID(或指定 UID)的音视频流分别进行审核。 |
该 API 需要在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
cname |
String | 待审核的频道名。 |
uid |
String | 字符串内容为 RTC 智能视频审核在频道内使用的用户 ID,需要和你在 acquire 请求中输入的 uid 相同。 |
clientRequest |
JSON | 特定的客户请求参数,对于该请求包含以下参数:
|
appsCollection
是一个用于设置场景组合的 JSON Object,包含以下字段:
combinationPolicy
: String 类型,场景组合方式。"default"
:(默认)仅进行审核,而不将审核内容上传至第三方云存储。在此设置下,你需要设置 moderationConfig
,但不能设置 storageConfig
,否则会收到报错。"storage_and_moderation"
: 进行审核,并将审核内容上传至第三方云存储。在此设置下,必须同时设置 storageConfig
和 moderationConfig
。recordingConfig
是一个用于设置订阅选项的 JSON Object。 RTC 智能视频审核会对你订阅的内容进行审核。recordingConfig
包含以下字段:
channelType
:Number 类型,频道模式。频道模式必须与 Agora Native/Web SDK 的设置一致,否则可能导致问题。
0
:通信模式(默认)1
:直播模式streamTypes
:Number 类型,订阅的媒体流类型。当要审核的内容为视频截图时,即当审核设置中的 moderationStreamType
为 1
时,streamTypes
必须设为 1
。
captureInterval
:(选填)Number 类型,截图周期(s),取值范围是 [5, 3600],默认为 10
。 RTC 智能视频审核会根据 captureInterval
的值对待审核的视频定期进行截图。
decryptionMode
:(选填)Number 类型,解密方案。如果频道设置了加密,该参数必须设置。解密方式必须与频道设置的加密方式一致。
secret
:(选填)String 类型。启用解密模式后,设置的解密密码。
videoStreamType
:(选填)Number 类型,设置订阅的视频流类型。如果频道中有用户开启了双流模式,你可以选择订阅视频大流或者小流。
0
:视频大流(默认),即高分辨率高码率的视频流1
:视频小流,即低分辨率低码率的视频流maxIdleTime
:(选填)Number 类型,最长空闲频道时间。默认值为 30 秒,该值需大于等于 5,且小于等于 (232-1)。如果频道内无用户的状态持续超过该时间, RTC 智能视频审核会自动退出。如果频道内有用户,但用户没有发流,不算作无用户状态。
subscribeVideoUids
:(选填)JSONArray 类型,由 UID 组成的数组,如 ["123","456"]
。指定审核哪几个用户的视频流。UID 为 string 类型。数组长度不得超过 32。如果设置了该参数,recordingConfig
中的 streamTypes
不可为 0
。如果不设置该参数,则审核所有用户的视频流。
subscribeUidGroup
: (选填)Number 类型,预估的订阅人数峰值。在单流模式下,为必填参数。举例来说,如果 subscribeVideoUids
为 ["100","101","102"]
,则订阅人数为 3 人。
0
: 1 到 2 人1
: 3 到 7 人2
: 8 到 12 人3
: 13 到 17 人moderationConfig
是一个用于设置审核的 JSON Object,包含以下字段:
moderationStreamType
:Number 类型,要审核的内容类型。目前仅支持设为 1
, 即审核视频截图。
vendor
:String 类型,供应商信息。目前仅可设置为 "agora"
。
callbackAddr
:String 类型,接收审核结果的 HTTP 服务器地址。 RTC 智能视频审核会按截图周期向该地址发送回调通知。例如,当 captureInterval
设置为 5
,则 RTC 智能视频审核每隔 5 秒发送一次回调通知。
errorHandlePolicy
:(选填)String 类型。错误处理策略。
"error_abort"
:(默认)当 RTC 智能视频审核发生错误后,所有服务停止。"error_ignore"
:当 RTC 智能视频审核发生错误后,该服务停止;如果开启了上传服务,则上传服务继续。combinationPolicy
为 "default"
时,errorHandlePolicy
不可设置为 error_ignore
,否则会收到报错,错误码为 2。storageConfig
和 moderationConfig
的 errorHandlePolicy
字段必须至少有一个设置为 "error_abort"
,否则无法调用 start
方法。agoraApiParams
:JSON 类型,Agora 的服务配置。
apiVersion
:String 类型,RESTful API 版本号。目前仅支持设为 "v1"
。apiData
:JSON 类型,服务的具体配置。type
:String 类型,需要识别的违规内容类型。目前只支持 "PORN"
,即色情内容的审核。callbackParam
:(选填)JSON 类型,回调透传字段。该字段会包含在回调通知中。你可以通过该字段传入与审核内容相关的信息,例如频道名。storageConfig
是一个用于设置第三方云存储的 JSON Object。
如果你同时设置了 moderationConfig
和storageConfig
,RTC 智能视频审核会将审核内容上传至第三方云存储。当要审核的内容为视频截图时,RTC 智能视频审核会将视频的截图(JPG 格式)上传至第三方云存储。
storageConfig
包含以下字段:
vendor
:Number 类型,第三方云存储平台。
region
:Number 类型,第三方云存储指定的地区信息。录制服务仅支持以下列表中的地区。
acquire
方法中设置了云端录制的 region
,则需要保证第三方云存储的 region
与云端录制的 region
在同一个地域中。例如:云端录制的 region
设置为 CN
(中国区),第三方云存储需要设置为 CN
内的区域。vendor
= 0,即第三方云存储为七牛云时:0
:华东1
:华北2
:华南3
:北美4
:东南亚vendor
= 1,即第三方云存储为 Amazon S3 时:0
:US_EAST_11
:US_EAST_22
:US_WEST_13
:US_WEST_24
:EU_WEST_15
:EU_WEST_26
:EU_WEST_37
:EU_CENTRAL_18
:AP_SOUTHEAST_19
:AP_SOUTHEAST_210
:AP_NORTHEAST_111
:AP_NORTHEAST_212
:SA_EAST_113
:CA_CENTRAL_114
:AP_SOUTH_115
:CN_NORTH_116
:CN_NORTHWEST_117
:US_GOV_WEST_1vendor
= 2,即第三方云存储为阿里云时:0
:CN_Hangzhou1
:CN_Shanghai2
:CN_Qingdao3
:CN_Beijing4
:CN_Zhangjiakou5
:CN_Huhehaote6
:CN_Shenzhen7
:CN_Hongkong8
:US_West_19
:US_East_110
:AP_Southeast_111
:AP_Southeast_212
:AP_Southeast_313
:AP_Southeast_514
:AP_Northeast_115
:AP_South_116
:EU_Central_117
:EU_West_118
:EU_East_1vendor
= 3,即第三方云存储为腾讯云时:0
:AP_Beijing_11
:AP_Beijing2
:AP_Shanghai3
:AP_Guangzhou4
:AP_Chengdu5
:AP_Chongqing6
:AP_Shenzhen_FSI7
:AP_Shanghai_FSI8
:AP_Beijing_FSI9
:AP_Hongkong10
:AP_Singapore11
:AP_Mumbai12
:AP_Seoul13
:AP_Bangkok14
:AP_Tokyo15
:NA_Siliconvalley16
:NA_Ashburn17
:NA_Toronto18
:EU_Frankfurt19
:EU_Moscowvendor
= 4,即第三方云存储为金山云时:0
:CN_Hangzhou1
:CN_Shanghai2
:CN_Qingdao3
:CN_Beijing4
:CN_Guangzhou5
:CN_Hongkong6
:JR_Beijing7
:JR_Shanghai8
:NA_Russia_19
:NA_Singapore_1vendor
= 5,即第三方云存储为 Microsoft Azure 时:region
参数,即使设置也不生效。
bucket
:String 类型,第三方云存储的 bucket,bucket 名称需要符合对应第三方云存储服务的命名规则。
accessKey
:String 类型,第三方云存储的 access key。在一般情况下,建议提供只写权限的访问密钥。如需延时转码,则访问密钥必须同时具备读写权限。
secretKey
:String 类型,第三方云存储的 secret key。
fileNamePrefix
:(选填)JSONArray 类型,由多个字符串组成的数组,指定截图文件在第三方云存储中的存储位置。举个例子,fileNamePrefix
= ["directory1","directory2"]
,将在截图文件的文件名前加上前缀 "directory1/directory2/
",即 directory1/directory2/xxx.m3u8
。前缀长度(包括斜杠)不得超过 128 个字符。字符串中不得出现斜杠。以下为支持的字符集范围:
errorHandlePolicy
:(选填)String 类型。错误处理策略。
"error_abort"
:(默认)当上传第三方云存储发生错误后,上传服务和 RTC 智能视频审核同时停止。"error_ignore"
:当上传第三方云存储发生错误后,该服务停止,RTC 智能视频审核继续。storageConfig
和 moderationConfig
的 errorHandlePolicy
字段必须至少有一个设置为 "error_abort"
,否则无法调用 start
方法。start
请求示例https://api.agora.io/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/mode/<mode>/start
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {
"token": "<token if any>",
"appsCollection": {
"combinationPolicy": "storage_and_moderation"
},
"recordingConfig": {
"channelType": 0,
"subscribeUidGroup": 2,
"streamTypes": 1,
"captureInterval": 10
},
"moderationConfig": {
"moderationStreamType": 1,
"vendor": "agora",
"callbackAddr": "http://xxxxx.com",
"errorHandlePolicy": "error_ignore",
"agoraApiParams": {
"apiVersion": "v1",
"apiData": {
"type": "PORN",
"callbackParam":{
"cname": "httpClient463224"
}
}
}
},
"storageConfig": {
"vendor": 2,
"region": 3,
"bucket": "xxxxx",
"secretKey": "xxxxx",
"accessKey": "xxxxxxf",
"fileNamePrefix": ["directory1","directory2"],
"errorHandlePolicy": "error_abort"
}
}
}
"Code": 200,
"Body":
{
"sid": "38f8e3cfdc474cd56fc1ceba380d7e1a",
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG"
}
code
:Number 类型,响应状态码。resourceId
:String 类型,RTC 智能视频审核使用的 resource ID。sid
:String 类型,审核 ID。成功开始 RTC 智能视频审核后,你会得到一个 sid (审核 ID)。该 ID 是一次审核的唯一标识。开始审核后,你可以调用 query
查询审核状态。
每个 App ID 每秒钟的请求数限制为 10 次。
该 API 需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
appid | String | 你的项目使用的 App ID。必须使用和待审核的频道相同的 App ID。 |
resourceid | String | 通过 acquire 请求获取的 resource ID。 |
sid | String | 通过 start 请求获取的审核 ID。 |
mode | String | 审核模式,目前只支持单流模式(individual )。 |
query
请求示例https://api.agora.io/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/sid/<sid>/mode/<mode>/query
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。query
响应示例以下为同时开启审核和上传截图时的响应示例:
"Code": 200,
"Body":
{
"resourceId":"JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG",
"sid":"38f8e3cfdc474cd56fc1ceba380d7e1a",
"serverResponse":{
"subServiceStatus": {
"recording_Service": "serviceInProgress",
"uploading_service": "serviceInProgress",
"moderation_Service": "serviceInProgress"
},
"sliceStartTime": "0"
}
}
code
:Number 类型,响应状态码。resourceId:
String 类型,RTC 智能视频审核的 resource ID。sid:
String 类型,审核 ID。成功开始 RTC 智能视频审核后,你会得到一个 sid (审核 ID)。该 ID 是一次审核的唯一标识。serverResponse:
JSON 类型,服务器返回的具体信息。status
:Number 类型,审核服务状态。建议你通过 subServiceStatus
查看子模块的服务状态。当你设置 storageConfig
时,请求会包含该字段。subServiceStatus
:JSON 类型,子模块的服务状态。
sliceStartTime:
String 类型,该参数当前无意义,任何情况下均为 "0"
。审核完成后,调用该方法离开频道,停止审核。审核停止后如需再次审核,必须再调用 acquire
方法请求一个新的 resource ID。
- 每个 App ID 每秒钟的请求数限制为 10 次。
- 当频道空闲(无用户)超过预设时间(默认为 30 秒) 后, RTC 智能视频审核也会自动退出频道停止审核。
该 API 需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
appid |
String | 你的项目使用的 App ID。必须使用和待审核的频道相同的 App ID。 |
resourceid |
String | 通过 acquire 请求获取的 resource ID。 |
sid |
String | 通过 start 请求获取的审核 ID。 |
mode |
String | 审核模式,目前只支持单流模式(individual )。 |
该 API 需要在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
cname |
String | 待审核的频道名。 |
uid |
String | 字符串内容为 RTC 智能视频审核在频道内使用的用户 ID,需要和你在 acquire 请求中输入的 uid 相同。 |
clientRequest |
JSON | 特定的客户请求参数,对于该方法无需填入任何内容,为一个空的 JSON。 |
stop
请求示例https://api.agora.io/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/sid/<sid>/mode/<mode>/stop
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest":{
}
}
stop
响应示例以下为同时开启审核和上传截图时的响应示例:
"Code": 200,
"Body":
{
"resourceId":"JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG",
"sid":"38f8e3cfdc474cd56fc1ceba380d7e1a",
"serverResponse":{
"uploadingStatus": "uploaded",
"moderationStatus": "moderationUploaded"
}
}
code:
Number 类型,响应状态码。resourceId:
String 类型,RTC 智能视频审核使用的 resource ID。sid:
String 类型,审核 ID。成功开始 RTC 智能视频审核后,你会得到一个 sid (审核 ID)。该 ID 是一次审核的唯一标识。serverResponse:
JSON 类型,服务器返回的具体信息。serverResponse
中包含如下字段:moderationStatus:
String 类型,当前 RTC 智能视频审核的状态。"moderationUploaded":
审核内容全部上传至 RTC 智能视频审核。"moderationPartialUploaded":
审核内容部分上传至 RTC 智能视频审核。"unknown"
:未知状态。uploadingStatus
:String 类型,当前截图文件上传的状态。"uploaded"
:本次审核的截图文件已经全部上传至指定的第三方云存储。"backuped"
:本次审核的截图文件已经全部上传完成,但是至少有一个截图文件上传到了 Agora 云备份。Agora 服务器会自动将这部分文件继续上传至指定的第三方云存储。"unknown"
:未知状态。如果某次审核结果不符合预期,你可以调用该方法进行反馈。Agora 会基于反馈对算法进行校正。
每个 APP ID 每秒钟的请求数限制为 10 次。
该 API 需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
request_id |
String | 审核结果的回调通知中的 requestId 参数值。 |
该 API 需要在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
checksum |
String | 审核结果的回调通知中的 checksum 参数值。 |
scene |
String | 审核结果的回调通知中的 scene 参数值。 |
feedback
请求示例https://api.agora.io/v1/moderator/img/feedback/<request_id>
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。{
"checksum": "75ee98849119c2ad4ec2aef58f178fd8",
"scene": "neutral"
}
feedback
响应示例"Code": 200,
"Body":
{
"success": true
}
code
:Number 类型,响应状态码。success
: Boolean 类型,请求是否成功。RTC 智能视频审核的回调通知包含以下两类:
第一类回调为审核结果的通知,直接通知到你在 moderationConfig
中的 callbackAddr
设置的地址。
{
"requestId": "38f8e3cfdc474cd56fc1ceba380d7e1a_1652693284_b5813fe2ae4fa5cdfe5abd8fef82526f",
"callbackParam": {
"cname": "httpClient463224"
},
"checksum": "75ee98849119c2ad4ec2aef58f178fd8",
"object": "38f8e3cfdc474cd56fc1ceba380d7e1a_httpClient463224__uid_s_91__uid_e_video_20200413081128672.rgb",
"code": 200,
"msg": "Moderation complete",
"channelName":"httpClient463224",
"userId":"91",
"results": {
"porn": {
"outputs": {
"neutral": 0.915607393,
"porn": 0.082511887,
"sexy": 0.00188077823
},
"scene": "neutral"
}
},
"suggestion": "pass"
}
requestId:
String 类型,此次回调通知的 ID,由 RTC 智能视频审核生成。一个 ID 对应一个被审核的文件,如一张视频截图。
callbackParam:
JSON 类型,回调透传字段,与你在 start
请求中设置的 callbackParam
值一致。
checksum
:String 类型,由 callbackAddr
、code
、object
和 requestId
四个参数值计算出的 MD5 值,用于校验此次回调通知是否来自 RTC 智能视频审核。
object
:String 类型,此次回调所审核文件的文件名。该文件的命名规则为:<sid>_<cname>__uid_s_<uid>__uid_e_<type>_utc.jpg
。文件名中各字段含义如下:
<sid>
:审核 ID<cname>
:频道名<uid>
:用户 ID<type>
: 文件类型,只支持 video
。<utc>
:该切片文件开始时的 UTC 时间,时区为 UTC+0,由年、月、日、小时、分钟、秒和毫秒组成。例如,utc
等于 20190611073246073
,表示该切片文件的开始时间为 UTC 2019 年 6 月 11 日 7 点 32 分 46 秒 73 毫秒。code
:Number 类型,此次审核的状态码。200 表示审核完成。
msg
:String 类型,此次审核的状态。"Moderation complete"
表示此次审核完成。
channelName
:String 类型,此次回调所审核频道的频道名。
userId
:String 类型,此次回调所审核用户的 UID。
result
:JSON 类型,此次审核的结果。包含以下参数:
porn
:JSON 类型。色情内容的审核结果。如果你在 start
请求中将 type
参数设置为 "PORN"
,会返回该字段。outputs
:JSON 类型。该图片为正常、色情或性感图片的可能性。neutral
:Float 类型。该图片为正常图片的可能性。正常指图片中无不良内容,可能存在正常且适度的肢体裸露和身体曲线。porn
:Float 类型。该图片为色情图片的可能性。色情指图片包含生殖器官的裸露、性行为与性暗示、性征的过分强调等。sexy
:Float 类型,该图片为性感图片的可能性。性感指图片包含较大尺度的裸露或男女性征的轻微轮廓,但无生殖器官的裸露。scene
:String 类型,审核结果。该审核结果为 RTC 视频智能审核基于 outputs
中的三个浮点数值对图片属性进行的判定。 你也可以自定义判定规则。scene
可返回以下值:"neutral"
:正常。"porn"
:色情。"sexy"
:性感。suggestion
:String 类型,图片处理意见。
"Pass"
:正常图片,不做处理。"Block"
:色情图片,审核不通过。可以参考处理违规视频进行处理。"review"
:性感图片。你可以根据自己的业务场景,直接将图片认定为正常,不做处理,或进行人工复审。例如,对性感容忍度较高的社交类应用,可以认定图片为正常;而对性感容忍度较低的教育类应用,可以对图片进行人工复审。第二类回调为 RTC 智能视频审核的事件通知,需要联系 sales@agora.io 开通消息通知服务。你可以查看 RESTful API 回调服务了解 RTC 智能视频审核的回调通知。
状态 | 描述 |
---|---|
"serviceIdle" | 服务未使用。 |
"serviceStarted" | 服务已开始。 |
"serviceReady" | 服务已就绪。 |
"serviceInProgress" | 服务在进行中。 |
"serviceCompleted" | moderation_Service : 审核内容已全部上传至 RTC 智能视频审核。uploading_service :审核内容已全部上传至第三方云存储。 |
"servicePartialCompleted" | moderation_Service : 审核内容部分上传至 RTC 智能视频审核。uploading_service :审核内容部分上传至第三方云存储,剩余部分上传至 Agora 备份云。 |
"serviceValidationFailed" | RTC 智能视频审核验证失败。例如 moderationConfig 中供应商的信息填写错误。 |
"serviceAbnormal" | 服务状态异常。 |
状态码 | 描述 |
---|---|
200 | 请求成功。 |
201 | 成功请求并创建了新的资源。 |
206 | 整个审核过程中没有用户发流,或部分截图文件没有上传到第三方云存储。 |
400 | 请求的语法错误(如参数错误),服务器无法理解。 |
401 | 未经授权的(App ID/Customer Certificate 匹配错误)。 |
404 | 服务器无法根据请求找到资源(网页)。 |
500 | 服务器内部错误,无法完成请求。 |
504 | 服务器内部错误。充当网关或代理的服务器未从远端服务器获取请求。 |
下面仅列出使用 RTC 智能视频审核 RESTful API 过程中常见的错误码或错误信息,如果遇到其他错误,请联系 Agora 技术支持。
2
:参数不合法,请确保参数类型正确、大小写正确、必填的参数均已填写。7
:审核已经在进行中 ,请勿用同一个 resource ID 重复 start
请求。8
:HTTP 请求头部字段错误,有以下几种情况:Content-type
错误,请确保 Content-type
为 application/json;charset=utf-8
。cloud_recording
字段。53
:审核已经在进行中。当采用相同参数再次调用 acquire
获得新的 resource ID,并用于 start
请求时,会发生该错误。如需发起多路审核,需要在 acquire
方法中填入不同的 UID。432
:请求参数错误。请求参数不合法。433
:resource ID 过期。获得 resource ID 后必须在 5 分钟内开始审核。请重新调用 acquire
获取新的 resource ID。435
:频道内没有用户加入,无审核对象。501
:审核正在退出。该错误可能在调用了 stop
方法后再调用 query
时发生。1001
:resource ID 解密失败。请重新调用 acquire
获取新的 resource ID。1003
:App ID 或者审核 ID(sid)与 resource ID 不匹配。请确保在一个审核周期内 resource ID、App ID 和审核 ID 一一对应。1013
:频道名不合法。频道名必须为长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):"invalid appid"
:无效的 App ID。请确保 App ID 填写正确。如果检查了 App ID 没有问题仍遇到此错误,请联系 Agora 技术支持。