To use the porn detection capability of CSS, you need to enable screencapturing. You can use the porn detection feature either by configuring it in the CSS console or by using APIs. This document shows you how to use porn detection APIs.
If your COS bucket allows public read access and has politically sensitive, pornographic, or other inappropriate content, to avoid the bucket being blocked, please delete the content first.
Because the porn detection feature is based on screencapturing, you need to enable screencapturing first.
Call CreateLiveSnapshotTemplate, setting PornFlag
to 1
to create a screencapturing template with porn detection enabled.
Call CreateLiveSnapshotRule, setting TemplateId
to the ID of the screencapturing template created in step 1 to associate the template with the target AppId
, DomainName
, AppName
, and StreamName
.
After you create a screencapturing rule with porn detection enabled, the porn detection feature will be automatically enabled for new streams. If you want to enable porn detection for an ongoing stream, you need to stop and restart the stream.
After porn detection is enabled, you can configure a registered domain name in the porn detection callback template to receive callbacks of porn detection results.
Note:By default, callbacks are sent only if suspicious content is detected.
Call CreateLiveCallbackTemplate, setting PornCensorshipNotifyUrl
to your domain name to create a porn detection callback template.
Call CreateLiveCallbackRule, setting TemplateId
to the ID of the callback template created in step 1 to associate the template with the target AppId
, DomainName
, and AppName
.
The CSS backend will send porn detection results to your domain in the form of HTTP POST requests. You can find the results in JSON format in the request body. The type
field indicates whether a live stream contains pornographic content.
Note:The system cannot achieve 100% accuracy. There may be false positives or false negatives. We recommend you review the images suspected of being pornographic using the
type
field.
Parameter | Required | Data Type | Description |
---|---|---|---|
streamId | No | String | The stream name. |
channelId | No | String | The channel ID. |
img | Yes | String | The link of the suspicious image. |
type | Yes | Array | The value of the label with the highest priority in the detection result. For details, see the description in label . |
score | Yes | Array | The confidence score. |
ocrMsg | No | String | The OCR result (if any). |
suggestion | Yes | String | The suggestion. Valid values:
|
label | Yes | String | The label with the highest priority in the detection result (LabelResults ). This is the result generated by the model. Please handle different types of violations based on your business needs. |
subLabel | Yes | String | The sub-label of the label with the highest priority in the detection result, such as porn - sexual acts. If no sub-labels are hit, this field will be empty. |
labelResults | No | Array of LabelResult | The label hit results generated by the category model, including the detection of pornographic content, ads, terrorist content, and politically sensitive content. Note: This field may return null , indicating that no valid values can be obtained. |
objectResults | No | Array of ObjectResult | The detection results generated by the object model, including the label name, hit score, coordinates, scenario, and suggestion for suspicious objects, advertising logos, QR codes, etc. For details, see the data structure of ObjectResults . Note: This field may return null , indicating that no valid values can be obtained. |
ocrResults | No | Array of OcrResult | The OCR result, including the text recognized, the text coordinates, and the suggestion. For details, see the data structure of OcrResults .Note: This field may return null , indicating that no valid values can be obtained. |
libResults | No | Array of LibResult | The detection results generated by the block/allowlist library. |
screenshotTime | Yes | Number | The time when the screenshot was taken. |
sendTime | Yes | Number | The Unix timestamp when the request was sent. |
stream_param | No | String | The push parameter. |
app | No | String | The push domain. |
appid | No | Number | The application ID. |
appname | No | String | The push path. |
The label hit result generated by the category model.
Parameter | Type | Description |
---|---|---|
Scene | String | The scene identified by the model, such as advertising, pornographic, and harmful. |
Suggestion | String | The operation suggested by the system for the current label. Please handle different types of violations based on your business needs. Valid values:
|
label | String | The label hit. |
SubLabel | String | The sub-label. |
Score | Integer | The confidence score for the label. |
Details | Array of LabelDetailItem | The sub-label hit details. |
The sub-label hit details.
Parameter | Type | Description |
---|---|---|
Id | Integer | The sequence ID. |
Name | String | The sub-label. |
Score | Integer | The sub-label score. Value range: 0-100. |
The object detection result.
Parameter | Type | Description |
---|---|---|
Scene | String | The object scene identified, such as QR code, logo, and OCR. |
Suggestion | String | The operation suggested by the system for the current label. Please handle different types of violations based on your business needs. Valid values:
|
label | String | The label hit. |
SubLabel | String | The sub-label. |
Score | Integer | The sub-label score. Value range: 0-100 |
Names | Array of String | The object names. |
Details | Array of ObjectDetail | The object detection details. |
The object detection details. If the scene identified is object, advertising logo, or QR code, this parameter returns the label name, label value, label score, and location information.
Parameter | Type | Description |
---|---|---|
Id | Integer | The ID of the object identified. |
Name | String | The label hit. |
Value | String | The value or content of the label hit. For example, if the label is QR code (QrCode ), this parameter is the URL of the QR code. |
Score | Integer | The score of the label hit. Value range: 0-100. For example, QrCode 99 indicates a high likelihood that the content is a QR code. |
Location | Location | The coordinates (of the top-left corner), dimensions, and rotation of the object detection frame. |
The location information of the suspicious content.
Parameter | Type | Description |
---|---|---|
X | Float | The horizontal coordinate of the top-left corner. |
Y | Float | The vertical coordinate of the top-left corner. |
Width | Float | The width. |
Height | Float | The height. |
Rotate | Float | The rotation angle of the detection frame. |
The OCR result.
Parameter | Type | Description |
---|---|---|
Scene | String | The scene identified. Default value: OCR . |
Suggestion | String | The operation suggested by the system for the label with the highest priority. Please handle different types of violations based on your business needs. Valid values:
|
label | String | The label hit. |
SubLabel | String | The sub-label. |
Score | Integer | The confidence score of the sub-label. Value range: 0-100. |
Text | String | The text. |
Details | Array of OcrTextDetail | The OCR details. |
The OCR details.
Parameter | Type | Description |
---|---|---|
Text | String | The text recognized (up to 5,000 bytes). |
label | String | The label hit. |
Keywords | Array of String | The keywords hit under the label. |
Score | Integer | The confidence score of the label. Value range: 0-100. |
Location | Location | The OCR text coordinates. |
The result generated by the block/allowlist library.
Parameter | Type | Description |
---|---|---|
Scene | String | The scene identified. Default value: Similar . |
Suggestion | String | The operation suggested by the system. Please handle different types of violations based on your business needs. Returned values:
|
label | String | The label hit. |
SubLabel | String | The sub-label. |
Score | Integer | The confidence score. Value range: 0-100. |
Details | Array of LibDetail | The block/allowlist library detection details. |
The custom library or block/allowlist library detection details.
Parameter | Type | Description |
---|---|---|
Id | Integer | The sequence ID. |
ImageId | String | The image ID. |
label | String | The label hit. |
Tag | String | A custom label. |
Score | Integer | The confidence score. Value range: 0-100. |
{
"ocrMsg": "",
"type": [1],
"socre": 99,
"screenshotTime": 1610640000,
"level": 0,
"img": "http://1.1.1.1/download/porn/test.jpg",
"abductionRisk": [],
"faceDetails": [],
"sendTime": 1615859827,
"suggestion": "Block",
"label": "Porn",
"subLabel": "PornHigh",
"labelResults": [{
"HitFlag": 0,
"Scene": "Illegal",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Details": []
}, {
"HitFlag": 1,
"Scene": "Porn",
"Suggestion": "Block",
"Label": "Porn",
"SubLabel": "PornHigh",
"Score": 99,
"Details": [{
"Id": 0,
"Name": "PornHigh",
"Score": 99
}, {
"Id": 1,
"Name": "WomenChest",
"Score": 99
}]
}, {
"HitFlag": 0,
"Scene": "Sexy",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Details": []
}, {
"HitFlag": 0,
"Scene": "Terror",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Details": []
}],
"objectResults": [{
"HitFlag": 0,
"Scene": "QrCode",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Names": [],
"Details": []
}, {
"HitFlag": 0,
"Scene": "MapRecognition",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Names": [],
"Details": []
}, {
"HitFlag": 0,
"Scene": "PolityFace",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Names": [],
"Details": []
}],
"ocrResults": [{
"HitFlag": 0,
"Scene": "OCR",
"Suggestion": "Pass",
"Label": "Normal",
"SubLabel": "",
"Score": 0,
"Text": "",
"Details": []
}],
"streamId": "teststream",
"channelId": "teststream",
"stream_param": "txSecret=40f38f69f574fd51126c421a3d96c374&txTime=5DEBEC80",
"app": "5000.myqcloud.com",
"appname": "live",
"appid": 10000,
"event_type": 317,
"sign": "ac920c3e66**********78cf1b5de2c63",
"t": 1615860427
}
You can disable porn detection by deleting the screencapturing rule or modifying the screencapturing template. The change only takes effect for new streams. If you want to disable porn detection for an ongoing stream, you need to stop and restart the stream.
Call DeleteLiveSnapshotRule, passing in the DomainName
, AppName
, and StreamName
bound to the screencapturing template ID to delete the screencapturing rule.
Call ModifyLiveSnapshotTemplate, setting PornFlag
to 0
.
Was this page helpful?