視頻審核協助您檢測視頻中的風險或違規內容,具體包括以下情境:視頻智能鑒黃、視頻暴恐涉政、視頻圖文違規、視頻不良情境、視頻logo、視頻語音違規。本文介紹了使用API介面非同步檢測視頻的方法。
(視頻非同步檢測)使用說明
業務介面:/green/video/asyncscan,表示視頻非同步檢測。
您可以調用該介面建立視頻非同步檢測任務。關於如何構造HTTP請求,請參見請求結構;您也可以直接選用已構造好的HTTP請求,更多資訊,請參見SDK概覽。
計費資訊:
該介面為收費介面。關於計費方式,請參見Alibaba Content Security Service產品定價。
同時檢測多個情境的情況下,將按照每個情境的檢測視頻截幀數量×每個情境的單價進行累加計費。如果同時檢測視頻中的語音內容違規,則還將增加視頻時間長度×語音違規功能的單價的費用。
檢測對象:
支援檢測視頻檔案或視頻流,且視頻檔案支援通過上傳視頻截幀圖片序列或視頻URL的方式進行檢測。
返回結果:
非同步檢測任務不會即時返回檢測結果,您需要通過callback或者輪詢的方式擷取檢測結果。檢測結果最長保留一小時。
callback擷取檢測結果:提交非同步檢測任務時,在請求參數中傳入callback參數,用來自動接收檢測結果,具體請參見(非同步檢測)請求參數。
輪詢擷取檢測結果:提交非同步檢測任務時,無需傳入callback參數;提交非同步檢測任務後,調用結果查詢介面擷取檢測結果,具體請參見(視頻非同步檢測結果查詢)使用說明。
視頻要求:
視頻檔案連結支援以下協議:HTTP和HTTPS。
視頻檔案支援以下格式:AVI、FLV、MP4、MPG、ASF、WMV、MOV、WMA、RMVB、RM、FLASH、TS。
視頻大小限制:預設單個視頻大小不超過200 MB。
如果您的需求超過200 MB,需要對視頻進行分區處理。您可以加入釘群(釘群號:35573806)聯絡技術人員幫您調整大小限制。
視頻流支援以下協議:RTMP、HLS、HTTP-FLV、RTSP。
視頻流時間長度限制:單個視頻流檢測任務最長支援24小時,超過24小時任務自動結束。
視頻檢測的時間依賴於視頻的下載時間。請保證被檢測的視頻檔案所在的儲存服務穩定可靠,建議您使用阿里雲OSS儲存服務儲存視頻檔案。
情境 | 描述 | 檢測結果分類 |
視頻智能鑒黃 | 檢測視頻中是否包含與性相關的情況。 | 正常、色情 |
視頻暴恐涉政 | 檢測視頻中是否包含暴恐涉政內容。 | 正常、暴恐涉政 |
視頻不良情境 | 檢測視頻中是否包含不良情境。 | 正常、不良情境(例如黑屏、白屏) |
視頻logo | 檢測視頻中是否包含特定的logo。 | 正常、logo |
視頻圖文違規 | 檢測視頻中是否包含廣告或違規的文字內容。 | 正常、廣告或文字違規 |
視頻語音違規 說明 該情境僅支援通過視頻非同步檢測介面調用。如需使用,請參見非同步檢測。 | 檢測視頻中的語音內容是否包含違規資訊。 說明 預設識別語言為中文。如果您需要識別英文內容,請聯絡商務經理。 | 正常、含垃圾資訊、廣告、涉政、暴恐、辱罵、色情、灌水、違禁、自訂(例如命中自訂關鍵詞) |
QPS限制
本介面的單使用者QPS限制為50次/秒,並發審核路數限制為20路(即同一時間只能處理20個任務,如需要提升並發路數請諮詢您的商務經理)。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
如果您對時效性要求不高,推薦您開啟近線檢測模式(offline),近線檢測模式會在您提交任務的24小時內開始檢測。
(非同步檢測)請求參數
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
bizType | String | 否 | default | 該欄位用於標識您的業務情境。您可以通過Alibaba Content Security Service控制台建立業務情境(具體操作,請參見自訂機審標準)。 |
live | Boolean | 否 | false | 是否直播。取值:
|
offline | Boolean | 否 | false | 是否近線檢測模式。
說明 該參數僅適用於視頻檔案檢測,視頻流檢測無需傳入該參數。 |
scenes | StringArray | 是 | ["porn"] | 指定視頻檢測情境。取值:
|
audioScenes | StringArray | 否 | ["antispam"] | 指定視頻語音檢測情境,唯一取值:antispam,表示語音反垃圾。 不傳入該參數時僅檢測視頻映像內容;如果傳入該參數,則在檢測視頻中映像的同時,對視頻中語音進行檢測。 說明 如果需要檢測視頻語音,則不支援通過上傳視頻截幀序列的方式(即在task中傳入frames)進行檢測,您必須傳入的視訊或視頻流的URL地址(即在task中傳入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服務發起。 說明 當使用callback時,該欄位必須提供。 |
cryptType | String | 否 | SHA256 | 使用回調通知時(callback),設定對回調通知內容進行加密的演算法。Alibaba Content Security Service會將返回結果(由 使用者uid + seed + content 拼接的字串)按照您設定的密碼編譯演算法加密後,再發送到您的回調通知地址。取值:
|
tasks | JSONArray | 是 | 指定檢測對象,JSON數組中的每個元素是一個檢測任務結構體。最多支援100個元素,即每次提交100條內容進行檢測,支援100個元素的前提是需要將並發任務調整到100個以上。關於每個元素的具體結構描述,請參見task。 |
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
clientInfo | JSONObject | 否 | {"userId":"12023****","userNick":"Mike","userType":"others"} | 用戶端資訊,請參見公用參數中的公用查詢參數。 伺服器會把全域的clientInfo和此處獨立的clientInfo合并。 說明 獨立的clientInfo優先順序更高。 |
dataId | String | 否 | videoId**** | 檢測對象對應的資料ID。 由大小寫英文字母、數字、底線(_)、短劃線(-)、英文句號(.)組成,不超過128個字元,可以用於唯一標識您的業務資料。 |
liveId | String | 否 | liveId**** | ApsaraVideo for Live流的ID。 該參數用於ApsaraVideo for Live任務去重,防止重複資料偵測,如果傳遞該參數,會根據 |
url | String | 否 | http://www.aliyundoc.com/a.flv | 公網HTTP/HTTPS URL,且長度不超過2048個字元。 說明 frames和url二選一。傳入url欄位後將按照傳視頻URL的方式計費。 |
frames | JSONArray | 否 | 待檢測視頻的截幀資訊。frames中的每個元素是個結構體,關於每個元素的具體結構描述,請參見frame。 說明 frames和url二選一。傳入url欄位後將按照傳視頻URL的方式計費。 | |
framePrefix | String | 否 | http://www.aliyundoc.com/video/ | 截幀地址的首碼,與 |
interval | Integer | 否 | 1 | 視頻截幀間隔,單位為秒,取值範圍:1~600。預設值為1秒。 |
maxFrames | Integer | 否 | 200 |
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
url | String | 否 | http://www.aliyundoc.com/0B860000586C0A0300038A0460000 | 視頻截幀的URL,與 |
offset | Integer | 否 | 10 | 截幀距離標題的時間戳記,單位為秒。 |
(非同步檢測)返回資料
名稱 | 類型 | 樣本值 | 描述 |
taskId | String | taskId**** | 檢測任務的ID。 |
dataId | String | videoId**** | 檢測對象對應的資料ID。 說明 如果在檢測請求參數中傳入了dataId,則此處返回對應的dataId。 |
(非同步檢測)樣本
請求樣本
傳入的視訊截幀圖片序列
http(s)://[Endpoint]/green/video/asyncscan &<公用請求參數> { "scenes": [ "porn" ], "tasks": [ { "dataId": "videoId****", "frames": [ { "offset": 10, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460000" }, { "offset": 20, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460001" }, { "offset": 30, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460002" }, { "offset": 40, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003" }, { "offset": 50, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003" }, { "offset": 60, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A046000x" } ] } ] }
傳入普通視頻檔案
http(s)://[Endpoint]/green/video/asyncscan &<公用請求參數> { "scenes": [ "porn" ], "audioScenes": [ "antispam" ], "tasks": [ { "dataId": "videoId****", "url": "http://www.aliyundoc.com/a.mp4", "interval": 1, "maxFrames": 200 } ] }
傳入的視訊直播流
http(s)://[Endpoint]/green/video/asyncscan &<公用請求參數> { "scenes": [ "porn" ], "live": true, "tasks": [ { "dataId": "videoId****", "url": "http://www.aliyundoc.com/a.flv", "interval": 1, "maxFrames": 200 } ] }
正常返回樣本
{
"code": 200,
"msg": "OK",
"requestId": "requestID****",
"data": [
{
"dataId": "videoId****",
"taskId": "taskId****"
}
]
}
(視頻非同步檢測結果查詢)使用說明
業務介面:/green/video/results,表示查詢視頻非同步檢測結果。
您可以調用該介面查詢視頻非同步檢測任務的結果。關於如何構造HTTP請求,請參見請求結構;您也可以直接選用已構造好的HTTP請求,更多資訊,請參見SDK概覽。
計費資訊:
該介面不計費。
查詢逾時:
建議您將查詢間隔設定為30秒(即在提交非同步檢測任務30秒後查詢結果),最長不能超出4個小時,否則結果將會丟失。
QPS限制
本介面的單使用者QPS限制為50次/秒。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
(結果查詢)請求參數
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
body | JSONArray | 是 | ["taskId****","taskId****"] | 要查詢的檢測任務的taskId列表。數組中的元素個數不超過100個。 您在提交檢測任務後,可以從返回資料中擷取檢測任務的taskId。 |
(結果查詢)返回資料
名稱 | 類型 | 樣本值 | 描述 |
code | Integer | 200 | 錯誤碼,和HTTP狀態代碼一致。 更多資訊,請參見公用錯誤碼。 |
msg | String | OK | 請求資訊的響應資訊。 |
dataId | String | videoId**** | 檢測對象對應的資料ID。 說明 如果在檢測請求參數中傳入了dataId,則此處返回對應的dataId。 |
taskId | String | taskId**** | 檢測任務的ID。 |
results | JSONArray | 返回結果,調用成功時(code=200),返回結果中包含一個或多個元素。每個元素是個結構體,具體結構描述,請參見result。 說明 視頻流檢測情境中,code返回280表示在檢測中,返回200表示檢測完成。在檢測中狀態時,檢測結果中包含從開始檢測到目前時間檢測到的結果。 | |
audioScanResults | JSONArray | 視頻語音檢測結果。具體結構描述,請參見audioScanResult。 |
名稱 | 類型 | 樣本值 | 描述 |
scene | String | porn | 視頻檢測情境,和調用請求中的情境對應。取值:
|
label | String | porn | 視頻檢測結果的分類。不同檢測情境的結果分類不同,具體如下:
|
sublabel | String | porn | 如果檢測情境包含智能鑒黃(porn)和暴恐涉政(terrorism),則該欄位可以返回檢測結果的細分類標籤。 該欄位預設不會返回。 |
suggestion | String | block | 建議您執行的後續操作。取值:
|
rate | Float | 99.2 | 信賴度分數,取值範圍:0(表示信賴度最低)~100(表示信賴度最高)。 如果suggestion為pass,則信賴度越高,表示內容正常的可能性越高;如果suggestion為review或block,則信賴度越高,表示內容違規的可能性越高。 重要 建議您參考suggestion和label(或者部分介面返回的sublabel)結果用於內容違規判定。 |
frames | JSONArray | 包含違規內容的視頻截幀的資訊。具體結構描述,請參見frame。 | |
hintWordsInfo | JSONArray | 視頻中含有廣告或文字違規資訊時,返回視頻中廣告文字命中的風險關鍵詞資訊。具體結構描述,請參見hintWordsInfo。 說明 只有圖文違規(ad)情境會返回該結果。 | |
logoData | JSONArray | 視頻中含有logo時,返回識別出來的logo資訊,具體結構描述,請參見logoData。 說明 只有視頻logo(logo)情境會返回該結果。 | |
sfaceData | JSONArray | 視頻中包含暴恐識涉政內容時,返回識別出來的暴恐涉政資訊,具體結構描述,請參見sfaceData。 說明 只有視頻暴恐涉政(terrorism)情境會返回該結果。 |
名稱 | 類型 | 樣本值 | 描述 |
url | String | http://www.aliyundoc.com/0B860000586C0A0 | 視頻截幀的地址。 |
offset | Integer | 50 | 視頻截幀距離標題的時間戳記,單位:秒。 |
label | String | porn | 視頻截幀的檢測結果分類。不同檢測情境的結果分類不同,具體如下:
|
rate | Float | 99.1 | 信賴度分數,取值範圍:0~100,信賴度越高表示檢測結果的可信度越高。建議您不要在業務中使用該分數。 |
名稱 | 類型 | 樣本值 | 描述 |
scene | String | antispam | 視頻語音檢測情境,唯一取值:antispam,表示語音反垃圾。 |
label | String | customized | 視頻語音的檢測結果分類。不同檢測情境的結果分類不同,具體如下:
|
suggestion | String | block | 建議您執行的後續操作。取值:
|
rate | Float | 99.91 | 信賴度分數,取值範圍:0(表示信賴度最低)~100(表示信賴度最高)。 如果suggestion為pass,則信賴度越高,表示內容正常的可能性越高;如果suggestion為review或block,則信賴度越高,表示內容違規的可能性越高。 重要 建議您參考suggestion和label(或者部分介面返回的sublabel)結果用於內容違規判定。 |
details | JSONArray | 語音對應的文本詳情(每一句文本對應一個元素),包含一個或者多個元素,具體結構描述,請參見detail。 |
名稱 | 類型 | 樣本值 | 描述 |
startTime | Integer | 24 | 句子開始的時間,單位為秒。 |
endTime | Integer | 60 | 句子結束的時間,單位為秒。 |
text | String | 電腦 | 語音轉換成文本的結果。 |
label | String | normal | 該句語音的檢測結果分類。取值:
|
keyword | String | 開啟 | 如果命中了使用者自訂關鍵詞,返回命中的關鍵詞。 |
libName | String | 人工 | 如果命中了使用者自訂關鍵詞,返回關鍵詞所在詞庫。 |
名稱 | 類型 | 樣本值 | 描述 |
type | String | TV | 識別出的logo類型,取值為TV (台標)。 |
name | String | ***台 | 識別出的logo名稱。 |
x | Float | 140 | 以圖片左上方為座標原點,logo地區左上方到y軸距離,單位:像素。 |
y | Float | 68 | 以圖片左上方為座標原點,logo地區左上方到x軸距離,單位:像素。 |
w | Float | 106 | logo地區寬度,單位:像素。 |
h | Float | 106 | logo地區高度,單位:像素。 |
名稱 | 類型 | 樣本值 | 描述 |
x | Float | 444 | 以圖片左上方為座標原點,人臉地區左上方到y軸距離。 |
y | Float | 174 | 以圖片左上方為座標原點,人臉地區左上方到x軸距離。 |
w | Float | 467 | 人臉地區寬度。 |
h | Float | 467 | 人臉地區高度。 |
smileRate | Float | 0 | 微笑的機率。 |
glasses | Boolean | false | 是否戴眼鏡。 |
faces | Array | 識別出的人臉資訊。關於具體結構描述,請參見下表face。 |
名稱 | 類型 | 樣本值 | 描述 |
name | String | xxxx | 相似人物的名稱。 |
rate | Float | 97.03 | 相似機率。 |
id | String | AliFace_001**** | 人臉ID。 |
名稱 | 類型 | 樣本值 | 描述 |
context | String | xxxx | 文字命中的自訂常值內容。 |
libCode | String | 69751 | 文字命中的自訂常值內容對應的庫code。 |
libName | String | 人工 | 文字命中的自訂常值內容對應的庫名稱。 |
名稱 | 類型 | 樣本值 | 描述 |
context | String | xxxx | 文字命中的風險關鍵詞內容。 |
(結果查詢)樣本
請求樣本
http(s)://[Endpoint]/green/video/results
&<公用請求參數>
[
"taskId****",
"taskId****"
]
正常返回樣本
僅檢測視頻圖畫
{ "code": 200, "msg": "OK", "requestId": "requestID****", "data": [ { "code": 200, "msg": "OK", "dataId": "videoId****", "taskId": "taskId****", "results": [ { "label": "porn", "rate": 99.2, "scene": "porn", "suggestion": "block" } ] } ] }
同時檢測視頻圖畫和視頻語音
{ "code": 200, "msg": "OK", "requestId": "requestID****", "data": [ { "code": 200, "msg": "OK", "dataId": "videoId****", "taskId": "taskId****", "results": [ { "label": "porn", "rate": 99.2, "scene": "porn", "suggestion": "block" } ], "audioScanResults": [ { "scene": "antispam", "label": "customized", "suggestion": "block", "rate": 99.91, "details": [ { "startTime": 0, "endTime": 24, "text": "電腦", "label": "customized" }, { "startTime": 24, "endTime": 60, "text": "電腦", "label": "normal" } ] } ] } ] }