L'API Video Intelligence peut identifier des entités affichées dans des séquences vidéo à l'aide de la fonctionnalité LABEL_DETECTION. Cette fonctionnalité identifie les objets, les lieux, les activités, les espèces animales, les produits, etc.
L'analyse peut être compartimentée comme suit :
- Niveau du cadre :
les entités sont identifiées et étiquetées dans chaque image (avec un échantillonnage d'une image par seconde). - Niveau de prise de vue :
Des prises de vue sont automatiquement détectées dans chaque segment (ou vidéo). Les entités sont alors identifiées et libellées dans chaque plan. - Niveau du segment :
l'utilisateur peut sélectionner des segments d'une vidéo et les spécifier pour l'analyse en indiquant les horodatages de début et de fin à prendre en compte pour l'annotation (voir le type VideoSegment). Les entités sont alors identifiées et libellées dans chaque segment. Si aucun segment n'est spécifié, l'intégralité de la vidéo est traitée comme un segment unique.
Annoter un fichier local
Voici un exemple d'analyse de thèmes au sein d'un fichier vidéo local.
Vous souhaitez obtenir une analyse plus approfondie ? Consultez le tutoriel détaillé en Python.
Envoyer la requête de processus
Vous trouverez ci-dessous la procédure à suivre pour envoyer une requête POST
à la méthode videos:annotate
. Vous pouvez configurer le LabelDetectionMode
sur annotations au niveau du plan et/ou du cadre. Nous vous recommandons d'utiliser SHOT_AND_FRAME_MODE
. Cet exemple fait intervenir le jeton d'accès associé à un compte de service configuré pour le projet à l'aide de Google Cloud CLI. Pour obtenir des instructions sur l'installation de Google Cloud CLI, la configuration d'un projet avec un compte de service et l'obtention d'un jeton d'accès, consultez le guide de démarrage rapide de Video Intelligence.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- BASE64_ENCODED_CONTENT : votre vidéo sous forme de données encodées en base64 Consultez les instructions concernant la conversion des données en base64.
- PROJECT_NUMBER: identifiant numérique de votre projet Google Cloud
Méthode HTTP et URL :
POST https://videointelligence.googleapis.com/v1/videos:annotate
Corps JSON de la requête :
{ "inputContent": "BASE64_ENCODED_CONTENT ", "features": ["LABEL_DETECTION"], }
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://videointelligence.googleapis.com/v1/videos:annotate"
PowerShell (Windows)
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://videointelligence.googleapis.com/v1/videos:annotate" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID " }
Si la requête aboutit, Video Intelligence renvoie le nom de votre opération.
Obtenir les résultats
Pour obtenir les résultats de votre requête, vous devez envoyer une requête GET
à la ressource projects.locations.operations
. Vous trouverez ci-dessous la procédure à suivre pour envoyer une requête de ce type.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- OPERATION_NAME : nom de l'opération tel qu'il est renvoyé par l'API Video Intelligence. Il est au format suivant :
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID
. - PROJECT_NUMBER: identifiant numérique de votre projet Google Cloud
Méthode HTTP et URL :
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
"https://videointelligence.googleapis.com/v1/OPERATION_NAME "
PowerShell (Windows)
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://videointelligence.googleapis.com/v1/OPERATION_NAME " | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress": [ { "progressPercent": 100, "startTime": "2019-03-12T19:36:09.110351Z", "updateTime": "2019-03-12T19:36:17.519069Z" } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults": [ { "segmentLabelAnnotations": [ { "entity": { "entityId": "/m/01prls", "description": "land vehicle", "languageCode": "en-US" }, "categoryEntities": [ { "entityId": "/m/07yv9", "description": "vehicle", "languageCode": "en-US" } ], "segments": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "38.757872s" }, "confidence": 0.6614419 } ] }, { "entity": { "entityId": "/m/039jbq", "description": "urban area", "languageCode": "en-US" }, "categoryEntities": [ { "entityId": "/m/01n32", "description": "city", "languageCode": "en-US" } ], "segments": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "38.757872s" }, "confidence": 0.92337775 } ] }, ...
C# : Veuillez suivre les instructions de configuration de C# sur la page des bibliothèques clientes, puis consultez la documentation de référence sur Video Intelligence pour .NET.
PHP : Veuillez suivre les instructions de configuration pour PHP sur la page des bibliothèques clientes, puis consultez la documentation de référence sur Video Intelligence pour PHP.
Ruby : Veuillez suivre les instructions de configuration pour Ruby sur la page des bibliothèques clientes, puis consultez la documentation de référence sur Video Intelligence pour Ruby.
Annoter un fichier dans Cloud Storage
Voici un exemple d'analyse de thèmes sur un fichier vidéo situé sur Cloud Storage.
Envoyer la requête de processus
Vous trouverez ci-dessous la procédure à suivre pour envoyer une requête POST
à la méthode annotate
. Cet exemple fait intervenir le jeton d'accès associé à un compte de service configuré pour le projet à l'aide de Google Cloud CLI. Pour obtenir des instructions sur l'installation de Google Cloud CLI, la configuration d'un projet avec un compte de service et l'obtention d'un jeton d'accès, consultez le guide de démarrage rapide de Video Intelligence.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- INPUT_URI : bucket Cloud Storage contenant le fichier que vous souhaitez annoter, y compris son nom. Doit commencer par
gs://
. - PROJECT_NUMBER: identifiant numérique de votre projet Google Cloud
Méthode HTTP et URL :
POST https://videointelligence.googleapis.com/v1/videos:annotate
Corps JSON de la requête :
{ "inputUri": "INPUT_URI ", "features": ["LABEL_DETECTION"], }
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://videointelligence.googleapis.com/v1/videos:annotate"
PowerShell (Windows)
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://videointelligence.googleapis.com/v1/videos:annotate" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID " }
Si la requête aboutit, Video Intelligence renvoie le nom de votre opération.
Obtenir les résultats
Pour obtenir les résultats de votre requête, vous devez envoyer une requête GET
à la ressource projects.locations.operations
. Vous trouverez ci-dessous la procédure à suivre pour envoyer une requête de ce type.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- OPERATION_NAME : nom de l'opération tel qu'il est renvoyé par l'API Video Intelligence. Il est au format suivant :
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID
. - PROJECT_NUMBER: identifiant numérique de votre projet Google Cloud
Méthode HTTP et URL :
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
"https://videointelligence.googleapis.com/v1/OPERATION_NAME "
PowerShell (Windows)
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://videointelligence.googleapis.com/v1/OPERATION_NAME " | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress": [ { "inputUri": "INPUT_URI ", "progressPercent": 100, "startTime": "2019-11-13T19:25:56.206335Z", "updateTime": "2019-11-13T19:26:16.215615Z" } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults": [ { "inputUri": "INPUT_URI ", "segmentLabelAnnotations": [ { "entity": { "entityId": "/m/01vkl", "description": "circle", "languageCode": "en-US" }, "categoryEntities": [ { "entityId": "/m/016nqd", "description": "shape", "languageCode": "en-US" } ], "segments": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "16.416666s" }, "confidence": 0.36535457 } ] }, ... ] } ] } }
Télécharger les résultats des annotations
Copiez l'annotation de la source vers le bucket de destination (consultez la page Copier des fichiers et des objets) :
gcloud storage cp gcs_uri gs://my-bucket
Remarque : Si l'URI GCS de sortie est fourni par l'utilisateur, l'annotation est stockée dans cet URI.
C# : Veuillez suivre les instructions de configuration de C# sur la page des bibliothèques clientes, puis consultez la documentation de référence sur Video Intelligence pour .NET.
PHP : Veuillez suivre les instructions de configuration pour PHP sur la page des bibliothèques clientes, puis consultez la documentation de référence sur Video Intelligence pour PHP.
Ruby : Veuillez suivre les instructions de configuration pour Ruby sur la page des bibliothèques clientes, puis consultez la documentation de référence sur Video Intelligence pour Ruby.