接入指引
註冊阿里雲帳號:立即註冊,按照操作提示完成帳號註冊。
開通Alibaba Content Security Service隨用隨付:請確保已開通服務,具體操作,請參見開通服務。開通不收費,介面接入使用後系統會按使用量自動出賬,具體資訊,請參見計費說明。
建立AccessKey:請確保您已通過RAM建立AccessKey,具體操作,請參見建立AccessKey。如果您使用的是RAM使用者(子帳號)AccessKey,您需要通過阿里雲帳號(主帳號)給RAM使用者賦予AliyunYundunGreenWebFullAccess許可權,具體操作,請參見RAM授權。
開發接入:推薦使用SDK方式調用。具體資訊,請參見視頻審核增強版2.0版SDK及接入指南。
ApsaraVideo for Live流審核服務包含以下3個介面:
提交審核任務
介面說明
業務介面:VideoModeration,ApsaraVideo for Live流僅提供非同步檢測介面。
支援的地區及接入地址:
地區 | 外網接入地址 | 內網接入地址 | 支援的服務 |
新加坡 | green-cip.ap-southeast-1.aliyuncs.com | green-cip-vpc.ap-southeast-1.aliyuncs.com | liveStreamDetection_global |
計費資訊:
該介面為收費介面。會根據您設定的直播畫面檢測策略和直播語音檢測策略進行計費,直播畫面可選擇多個服務(service),將按照畫面截幀數量*每個服務的單價進行累加計費。如果同時檢測直播中的語音內容違規,則還將增加視頻時間長度*語音違規功能的單價的費用。關於計費方式,請參見計費說明。
檢測對象:支援檢測直播流。
返回結果:非同步檢測任務不會即時返回檢測結果,您需要通過callback或者輪詢的方式擷取檢測結果。檢測結果最長保留24小時。
直播流要求:
QPS限制
本介面的單使用者QPS限制為100次/秒,並發審核路數限制為50路(即同一時間只能處理50個任務,如需要提升並發路數請諮詢您的商務經理)。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
調試
在接入前,您也可以通過阿里雲OpenAPI線上調試VideoModeration介面,查看調用範例程式碼及SDK依賴資訊,方便概覽介面的使用方法和參數。
重要
線上調試能力是基於當前登入帳號調用Alibaba Content Security Service的API介面,因此調用量會計入帳號的收費用量中。
請求參數
名稱 | 類型 | 是否必須 | 樣本值 | 描述 |
Service | String | 是 | liveStreamDetection_global | 審核服務類型。如下: |
ServiceParameters | JSONString | 是 | | 審核服務需要的參數集。JSON字串格式,關於每個字串的描述,請參見表1 ServiceParameters。 |
表1 ServiceParameters
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
url | String | 是 | http://www.aliyundoc.com/a.flv | 待檢測對象的URL,請確保該URL能通過公網訪問到,且URL地址長度不超過2048個字元。 說明 URL地址中不能包含中文,且一次請求請確保僅傳入1條URL。 |
callback | String | 否 | http://www.aliyundoc.com | 檢測結果回調通知您的URL,支援使用HTTP和HTTPS協議的地址。該欄位為空白時,您必須定時輪詢檢測結果。 callback介面必須支援POST方法、UTF-8編碼的傳輸資料,以及表單參數checksum和content。 Alibaba Content Security Service按照以下規則和格式設定checksum和content,調用您的callback介面返回檢測結果。 說明 您的服務端callback介面收到Alibaba Content Security Service推送的結果後,如果返回的HTTP狀態代碼為200,則表示接收成功,其他的HTTP狀態代碼均視為接收失敗。接收失敗時,Alibaba Content Security Service將最多重複推送16次檢測結果,直到接收成功。重複推送16次後仍未接收成功,則不再推送,建議您檢查callback介面的狀態。 |
seed | String | 否 | abc**** | 隨機字串,該值用於回調通知請求中的簽名。 由英文字母、數字、底線(_)組成,不超過64個字元。由您自訂,用於在接收到Alibaba Content Security Service的回調通知時校正請求由阿里雲Alibaba Content Security Service服務發起。 |
cryptType | String | 否 | SHA256 | 使用回調通知時(callback),設定對回調通知內容進行簽名的演算法。Alibaba Content Security Service會將返回結果(由使用者uid + seed + content拼接的字串)按照您設定的密碼編譯演算法計算簽名,再發送到您的回調通知地址。取值: SHA256(預設):使用SHA256密碼編譯演算法。 SM3:使用國密HMAC-SM3密碼編譯演算法,返回十六進位的字串,且字串由小寫字母和數字組成。 例如,abc經國密SM3加密後返回66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0。
|
dataId | String | 否 | videoId**** | 檢測對象對應的資料ID。 由大小寫英文字母、數字、底線(_)、短劃線(-)、英文句號(.)組成,不超過128個字元,可以用於唯一標識您的業務資料。 |
liveId | String | 否 | liveId**** | ApsaraVideo for Live流的ID。 該參數用於ApsaraVideo for Live任務去重,防止重複資料偵測,如果傳遞該參數,會根據uid+service+liveId判斷是否存在檢測中的直播任務。如果存在,就直接返回已存在的直播檢測taskId,不發起新的任務。 |
說明
您的服務端callback介面收到Alibaba Content Security Service推送的結果後,如果返回的HTTP狀態代碼為200,則表示接收成功,其他的HTTP狀態代碼均視為接收失敗。接收失敗時,Alibaba Content Security Service將最多重複推送16次檢測結果,直到接收成功。重複推送16次後仍未接收成功,則不再推送,建議您檢查callback介面的狀態。
返回資料
名稱 | 類型 | 樣本值 | 描述 |
Code | Integer | 200 | 狀態代碼。更多資訊,請參見Code說明。 |
Data | JSONObject | {"TaskId": "AAAAA-BBBBB"} | 審核結果資料。 |
Message | String | OK | 請求訊息的響應訊息。 |
RequestId | String | ABCD1234-1234-1234-1234-123**** | 請求ID。 |
樣本
請求樣本
{
"Service": "liveStreamDetection_global",
"ServiceParameters": {
"url": "http://www.aliyundoc.com/a.flv",
"dataId": "videoId****",
"liveId": "liveId****"
}
}
正常返回樣本
{
"Msg": "OK",
"Code": 200,
"Data":
{
"TaskId": "AAAAA-BBBBB",
"DataId": "videoId****"
},
"RequestId": "ABCD1234-1234-1234-1234-123****"
}
擷取直播審核任務結果
介面說明
QPS限制
本介面的單使用者QPS限制為100次/秒。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
調試
在接入前,您也可以通過阿里雲OpenAPI線上調試VideoModerationResult介面,查看調用範例程式碼及SDK依賴資訊,方便概覽介面的使用方法和參數。
請求參數
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
Service | String | 是 | liveStreamDetection_global | 審核服務類型,需要和提交審核任務的審核服務類型保持一致。 |
ServiceParameters | JSONString | 是 | | 審核服務需要的參數集。JSON字串格式,關於每個字串的描述,請參見表表1 ServiceParameters。 |
表1 ServiceParameters
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
taskId | string | 是 | abcd**** | 要查詢的檢測任務的taskId,每次支援輸入一個taskId。 說明 您在提交檢測任務後,可以從返回資料中擷取檢測任務的taskId。 |
返回資料
名稱 | 類型 | 樣本值 | 描述 |
RequestId | String | ABCD1234-1234-1234-1234-123**** | 本次調用請求的ID,是由阿里雲為該請求產生的唯一識別碼,可用於排查和定位問題。 |
Data | Object | | 直播流內容檢測結果。更多資訊,請參見表2 Data。 |
Code | String | 200 | 狀態代碼。更多資訊,請參見Code說明。 |
Message | String | OK | 本次請求的響應訊息。 |
表2 Data
名稱 | 類型 | 樣本值 | 描述 |
DataId | String | videoId**** | 檢測對象對應的資料ID。 說明 如果在檢測請求參數中傳入了dataId,則此處返回對應的DataId。 |
LiveId | String | liveId**** | 檢測對象對應的直播流ID。 說明 如果在檢測請求參數中傳入了liveId,則此處返回對應的LiveId。 |
TaskId | String | AAAAA-BBBBB | 檢測對象對應的任務ID。 |
RiskLevel | String | high | ApsaraVideo for Live的風險等級,根據視頻畫面和視頻音頻綜合判斷,傳回值包括: high:高風險 medium:中風險 low:低風險 none:未檢測到風險
|
FrameResult | JSONObject | | 直播畫面檢測結果,調用成功時(code=200),返回結果中包含一個結構體,具體結構,請參見表3 FrameResult。 說明 視頻流檢測情境中,code返回280表示在檢測中,返回200表示檢測完成。在檢測中狀態時,檢測結果中包含從開始檢測到目前時間檢測到的結果。 |
AudioResult | JSONObject | | 直播語音檢測結果。返回結果中包含一個結構體,關於結構體的描述,請參見表8 audioResult。 |
表3 FrameResult
名稱 | 類型 | 樣本值 | 描述 |
FrameNum | Integer | 200 | 直播畫面返回截幀數。 |
FrameSummarys | JSONArray | | 直播畫面標籤匯總。具體結構描述,請參見表4 FrameSummarys。 |
RiskLevel | String | high | 直播畫面風險等級,根據所有直播截幀計算返回,傳回值包括: high:高風險 medium:中風險 low:低風險 none:未檢測到風險
|
Frames | JSONArray | | 包含命中標籤的直播截幀資訊。具體結構描述,請參見表5 Frames。 |
表4 FrameSummarys
名稱 | 類型 | 樣本值 | 描述 |
Label | String | violent_armedForces | 視頻截幀標籤。 |
Description | String | 疑似含有煙火類內容元素 | 對Labal欄位的說明。 重要 該欄位為Label欄位的解釋說明,可能會變更調整,建議根據Label欄位進行處置,不要基於該欄位進行結果處置。 |
LabelSum | Integer | 8 | 標籤出現次數。 |
表5 Frames
名稱 | 類型 | 樣本值 | 描述 |
TempUrl | String | http://www.aliyundoc.com/test.jpg | 直播截幀的臨時地址,30分鐘有效,建議您及時進行轉存。 說明 若開啟了視頻證據轉存,則返迴轉存的視頻截幀的OSS URL連結。 |
Offset | Float | 50.5 | 直播截幀距離直播開始的時間戳記,單位:秒。 |
Timestamp | Integer | 1684559739000 | 該截幀處理的絕對時間戳記,單位:毫秒。 |
RiskLevel | String | high | 直播截幀風險等級,根據設定的高低風險分返回,傳回值包括: high:高風險 medium:中風險 low:低風險 none:未檢測到風險
|
Results | JSONArray | | 直播截幀檢測的風險標籤、置信分等參數結果。更多資訊,請參見表6 Results。 |
表6 Results
名稱 | 類型 | 樣本值 | 描述 |
Service | String | baselineCheck_global | 調用的畫面檢測服務(service)。 |
Result | Array | | 直播截幀檢測的風險標籤、置信分等參數結果。更多資訊,請參見表7 Result。 |
表7 Result
名稱 | 類型 | 樣本值 | 描述 |
Label | String | violent_explosion | 直播截幀檢測運算後返回的標籤。同一張截幀可能會檢出多個標籤和分值。支援的標籤如下: |
Confidence | Float | 81.22 | 置信分值,0到100分,保留到小數點後2位。 |
Description | String | 疑似含有煙火類內容元素 | 對Labal欄位的說明。 重要 該欄位為Label欄位的解釋說明,可能會變更調整,建議根據Label欄位進行處置,不要基於該欄位進行結果處置。 |
表8 audioResult
名稱 | 類型 | 樣本值 | 描述 |
AudioSummarys | JSONArray | | 語音標籤匯總。具體結構描述,請參見表9 AudioSummarys。 |
RiskLevel | String | high | 語音風險等級,根據所有音頻切片計算返回,傳回值包括: high:高風險 medium:中風險 low:低風險 none:未檢測到風險
|
SliceDetails | JSONArray | | 語音對應的文本詳情(每一句文本對應一個元素),包含一個或者多個元素,具體結構描述,請參見表10 SliceDetails。 |
表9 AudioSummarys
名稱 | 類型 | 樣本值 | 描述 |
Label | String | profanity | 視頻語音標籤。 |
LabelSum | Integer | 8 | 標籤出現次數。 |
表10 SliceDetails
名稱 | 類型 | 樣本值 | 描述 |
StartTime | Integer | 0 | 句子開始的時間,單位:秒。 |
EndTime | Integer | 4065 | 句子結束的時間,單位:秒。 |
StartTimestamp | Integer | 1678854649720 | 切片開始時間戳,單位:毫秒。 |
EndTimestamp | Integer | 1678854649720 | 切片結束時間戳記,單位:毫秒。 |
Text | String | 噁心的 | 語音轉換成常值內容。 |
Url | String | https://aliyundoc.com/test.wav | 如果檢測的內容是語音流,表示該段文本對應的語音流的臨時訪問地址。該地址有效時間為30分鐘,需要及時轉存。 |
Labels | String | political_content,xxxx | 標籤詳情,多個標籤以逗號分隔。包含: ad:廣告引流 violence:暴恐內容 political_content:涉政內容 specified_speaking:特定聲音 specified_lyrics:特定歌曲 sexual_content:與性相關的情況 sexual_sounds:呻吟聲音 contraband:違禁內容 profanity:辱罵內容 religion:宗教內容 cyberbullying:網路暴力 negative_content:不良內容 nontalk:靜音音頻 C_customized:使用者庫命中
|
RiskLevel | String | high | 視頻音頻切片風險等級,傳回值包括: high:高風險 medium:中風險 low:低風險 none:未檢測到風險
|
RiskWords | String | AAA,BBB,CCC | 命中風險詞,多個詞以逗號分隔。 |
RiskTips | String | 色情_低俗詞,色情_描述 | 細分標籤,多個標籤以逗號分隔。 |
Extend | String | {"riskTips":"色情_低俗詞","riskWords":"色情服務"} | 保留欄位。 |
樣本
請求樣本
{
"Service": "liveStreamDetection_global",
"ServiceParameters": {
"taskId": "abcd****"
}
}
正常返回樣本
{
"Code": 200,
"RequestId": "25106421-XXXX-XXXX-XXXX-15DA5AAAC546",
"Message": "success finished",
"Data": {
"DataId": "dc16c28f-xxxx-xxxx-xxxx-51efe0131080",
"LiveId": "live0307-0728-****",
"RiskLevel": "high",
"FrameResult": {
"FrameNum": 2,
"FrameSummarys": [
{
"Label": "violent_explosion",
"Description": "疑似含有煙火類內容元素",
"LabelSum": 8
},
{
"Label": "sexual_cleavage",
"Description": "疑似含有包含肢體裸露或性感內容",
"LabelSum": 8
}
],
"RiskLevel": "medium",
"Frames": [
{
"Offset": 1,
"RiskLevel": "none",
"Results": [
{
"Result": [
{
"Label": "nonLabel",
"Description": "未檢測出風險"
}
],
"Service": "baselineCheck_global"
}
],
"TempUrl": "http://abc.oss-ap-southeast-1.aliyuncs.com/test1.jpg",
"Timestamp": 1704769999000
},
{
"Offset": 2,
"RiskLevel": "medium",
"Results": [
{
"Result": [
{
"Confidence": 78.88,
"Label": "sexual_cleavage",
"Description": "疑似含有包含肢體裸露或性感內容"
},
{
"Confidence": 74.18,
"Label": "violent_explosion",
"Description": "疑似含有煙火類內容元素"
}
],
"Service": "baselineCheck_global"
}
],
"TempUrl": "http://abc.oss-ap-southeast-1.aliyuncs.com/test2.jpg",
"Timestamp": 1704769989000
}
]
}
}
}
{
"Code": 200,
"RequestId": "25106421-XXXX-XXXX-XXXX-15DA5AAAC546",
"Message": "success finished",
"Data": {
"DataId": "dc16c28f-xxxx-xxxx-xxxx-51efe0131080",
"LiveId": "live0307-0728-****",
"RiskLevel": "high",
"AudioResult": {
"AudioSummarys": [
{
"Label": "sexual_sounds",
"LabelSum": 3
}
],
"RiskLevel": "high",
"SliceDetails": [
{
"EndTime": 60,
"EndTimestamp": 1698912813192,
"Labels": "",
"RiskLevel": "none",
"StartTime": 30,
"StartTimestamp": 1698912783192,
"Text": "Alibaba Content Security Service",
"Url": "http://abc.oss-ap-southeast-1.aliyuncs.com/test.wav"
},
{
"EndTime": 30,
"EndTimestamp": 1698912813192,
"Extend": "{\"customizedWords\":\"服務\",\"customizedLibs\":\"test\"}",
"Labels": "C_customized",
"RiskLevel": "high",
"StartTime": 0,
"StartTimestamp": 1698912783192,
"Text": "歡迎使用阿里雲Alibaba Content Security Service服務",
"Url": "http://abc.oss-ap-southeast-1.aliyuncs.com/test.wav"
}
]
},
"FrameResult": {
"FrameNum": 2,
"FrameSummarys": [
{
"Label": "violent_explosion",
"Description": "疑似含有煙火類內容元素",
"LabelSum": 8
},
{
"Label": "sexual_cleavage",
"Description": "疑似含有包含肢體裸露或性感內容",
"LabelSum": 8
}
],
"RiskLevel": "medium",
"Frames": [
{
"Offset": 1,
"RiskLevel": "none",
"Results": [
{
"Result": [
{
"Label": "nonLabel",
"Description": "未檢測出風險"
}
],
"Service": "baselineCheck_global"
}
],
"TempUrl": "http://abc.oss-ap-southeast-1.aliyuncs.com/test1.jpg",
"Timestamp": 1704769999000
},
{
"Offset": 2,
"RiskLevel": "medium",
"Results": [
{
"Result": [
{
"Confidence": 74.18,
"Label": "violent_explosion",
"Description": "疑似含有煙火類內容元素"
},
{
"Confidence": 78.88,
"Label": "sexual_cleavage",
"Description": "疑似含有包含肢體裸露或性感內容"
}
],
"Service": "baselineCheck_global"
}
],
"TempUrl": "http://abc.oss-ap-southeast-1.aliyuncs.com/test2.jpg",
"Timestamp": 1704769989000
}
]
}
}
}
取消直播審核任務
介面說明
您可以調用該介面取消直播流審核任務。
調試
在接入前,您也可以通過阿里雲OpenAPI線上調試VideoModerationCancel介面,查看調用範例程式碼及SDK依賴資訊,方便概覽介面的使用方法和參數。
請求參數
名稱 | 類型 | 是否必須 | 樣本值 | 描述 |
Service | String | 是 | liveStreamDetection_global | 審核服務類型。請和提交審核任務的類型保持一致。 |
ServiceParameters | JSONString | 是 | | 服務需要的參數集。JSON字串格式,關於每個字串的描述,請參見表 11. ServiceParameters。 |
表11 ServiceParameters
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
taskId | string | 是 | abcd**** | 要取消的檢測任務的taskId,每次支援輸入一個。 備忘:您在提交檢測任務後,可以從返回資料中擷取檢測任務的taskId。 |
返回參數
名稱 | 類型 | 樣本值 | 描述 |
Code | Integer | 200 | 狀態代碼。更多資訊,請參見Code說明。 |
Message | String | OK | 本次請求的響應訊息。 |
RequestId | String | AAAAAA-BBBB-CCCCC-DDDD-EEEEEEEE**** | 請求ID。 |
樣本
請求樣本
{
"Service": "liveStreamDetection",
"ServiceParameters": {
"taskId": "abcd****"
}
}
返回結果參考
{
"Msg": "OK",
"Code": 200,
"RequestId": "70ED13B0-BC22-576D-9CCF-1CC12FEAC477"
}
Code說明
以下為ApsaraVideo for Live流審核2.0版介面返回Code的含義說明,系統僅對Code返回為200和280的請求計量計費,其他Code不會計費。
Code | 說明 |
200 | 請求正常或者檢測完成。 |
280 | 檢測中。 |
400 | 請求參數為空白。 |
401 | 請求參數錯誤。 |
402 | 請求參數長度不符合介面規定,請檢查並修改。 |
403 | 請求超過QPS限制,請檢查並調整並發。 |
404 | 傳入的視頻下載遇到錯誤,請檢查或重試。 |
405 | 傳入的視頻下載逾時,可能是因為視頻無法訪問,請檢查調整後重試。 |
406 | 傳入的視頻過大,請檢查調整視頻大小後再重試。 |
407 | 傳入的視頻格式暫不支援,請檢查調整後重試。 |
408 | 該帳號無許可權調用該介面,可能是帳號未開通或者已欠費,或者調用帳號未被授權訪問。 |
409 | 傳入的TaskId不存在,可能是結果已經超過24小時有效期間。 |
480 | 檢測並發路數超過限制,請檢查並調整並發。 |
500 | 系統異常。 |