下列程式碼範例說明如何使用 Video Intelligence API 偵測影片檔案中的人物。
Video Intelligence 可偵測影片檔案中是否有人,並追蹤整個影片或影片片段中的人物。
偵測 Cloud Storage 檔案中的人物
以下範例說明如何使用人物偵測功能,將註解要求傳送至 Video Intelligence。
REST
傳送影片註解要求
以下說明如何對 videos:annotate 方法傳送 POST 要求。這個範例使用 Google Cloud CLI 建立存取權杖。如需 gcloud CLI 的安裝操作說明,請參閱「Video Intelligence API 快速入門」。另請參閱「PersonDetectionConfig」。
使用任何要求資料之前,請先替換以下項目:
- INPUT_URI:包含要註解檔案的 Cloud Storage bucket,包括檔案名稱。開頭必須為
gs://。
例如:
"inputUri": "gs://cloud-samples-data/video/googlework_short.mp4" - PROJECT_NUMBER: Google Cloud 專案的數字 ID
HTTP 方法和網址:
POST https://videointelligence.googleapis.com/v1/videos:annotate
JSON 要求主體:
{
"inputUri": "INPUT_URI",
"features": ["PERSON_DETECTION"],
"videoContext": {
"personDetectionConfig": {
"includeBoundingBoxes": true,
"includePoseLandmarks": true,
"includeAttributes": true
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
如果回應成功,Video Intelligence API 會傳回作業的 name。上例顯示這類回應的範例,其中:
- PROJECT_NUMBER:專案編號
- LOCATION_ID:應進行註解的 Cloud 區域。支援的雲端區域包括:
us-east1、us-west1、europe-west1、asia-east1。如果沒有指定任何地區,則會依據影片檔案位置來決定地區。 - OPERATION_ID:為要求建立的長時間作業 ID,並在您開始作業時於回應中提供,例如
12345...
取得註解結果
如要擷取作業結果,請使用對 videos:annotate 的呼叫傳回的作業名稱,發出 GET 要求,如下列範例所示。
使用任何要求資料之前,請先替換以下項目:
- OPERATION_NAME:Video Intelligence API 傳回的作業名稱。作業名稱的格式為
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID - PROJECT_NUMBER: Google Cloud 專案的數字 ID
HTTP 方法和網址:
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
鏡頭偵測註解會以shotAnnotations 清單傳回。
注意:只有在 done 欄位的值為 True 時,系統才會傳回這個欄位。
如果作業未完成,則回應不會含有這個欄位。
下載註解結果
將註解從來源複製到目標值區:(請參閱「複製檔案和物件」)
gcloud storage cp gcs_uri gs://my-bucket
注意:如果輸出 GCS URI 是由使用者提供,註解就會儲存在該 GCS URI 中。
Java
如要向 Video Intelligence 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要向 Video Intelligence 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要向 Video Intelligence 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
其他語言
C#:請按照用戶端程式庫頁面上的 C# 設定操作說明完成相關步驟,然後參閱「.NET 適用的 Video Intelligence 參考文件」。
PHP:請按照用戶端程式庫頁面上的 PHP 設定操作說明完成相關步驟,然後參閱「PHP 適用的 Video Intelligence 參考文件」。
Ruby:請按照用戶端程式庫頁面上的 Ruby 設定操作說明完成相關步驟,然後參閱「Ruby 適用的 Video Intelligence 參考文件」。
偵測本機檔案中的人物
以下範例使用人物偵測功能,找出從本機電腦上傳的影片檔案中的實體。
REST
傳送處理要求
如要對本機影片檔案執行人物偵測,請對影片檔案的內容執行 base64 編碼。如要瞭解如何使用 base64 編碼影片檔案內容,請參閱「Base64 編碼」。然後對 videos:annotate 方法提出 POST 要求。在要求的 inputContent 欄位中加入 base64 編碼內容,並指定 PERSON_DETECTION 功能。
以下為使用 curl 的 POST 要求範例。這個範例使用 Google Cloud CLI 建立存取權杖。如需安裝 gcloud CLI 的操作說明,請參閱「Video Intelligence API 快速入門」
使用任何要求資料之前,請先替換以下項目:
- inputContent: 二進位格式的本機影片檔案
例如:'AAAAGGZ0eXBtcDQyAAAAAGlzb21tcDQyAAGVYW1vb3YAAABsbXZoZAAAAADWvhlR1r4ZUQABX5ABCOxo AAEAAAEAAAAAAA4...' - PROJECT_NUMBER: Google Cloud 專案的數字 ID
HTTP 方法和網址:
POST https://videointelligence.googleapis.com/v1/videos:annotate
JSON 要求主體:
{
"inputUri": "Local video file in binary format",
"features": ["PERSON_DETECTION"],
"videoContext": {
"personDetectionConfig": {
"includeBoundingBoxes": true,
"includePoseLandmarks": true,
"includeAttributes": true
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
如果要求成功,Video Intelligence API 會傳回作業的 name。上例顯示這類回應的範例,其中 project-number 是專案編號,operation-id 則是為要求建立的長時間執行作業 ID。
{
"name": "us-west1.17122464255125931980"
}
取得結果
如要擷取作業結果,請向 operations 端點發出 GET 要求,並指定作業名稱。
使用任何要求資料之前,請先替換以下項目:
- OPERATION_NAME:Video Intelligence API 傳回的作業名稱。作業名稱的格式為
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID - PROJECT_NUMBER: Google Cloud 專案的數字 ID
HTTP 方法和網址:
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
Java
如要向 Video Intelligence 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要向 Video Intelligence 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要向 Video Intelligence 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
其他語言
C#:請按照用戶端程式庫頁面上的 C# 設定操作說明完成相關步驟,然後參閱「.NET 適用的 Video Intelligence 參考文件」。
PHP:請按照用戶端程式庫頁面上的 PHP 設定操作說明完成相關步驟,然後參閱「PHP 適用的 Video Intelligence 參考文件」。
Ruby:請按照用戶端程式庫頁面上的 Ruby 設定操作說明完成相關步驟,然後參閱「Ruby 適用的 Video Intelligence 參考文件」。