1. Présentation
L'API Google Cloud Video Intelligence permet aux développeurs d'utiliser la technologie d'analyse vidéo de Google dans leurs applications.
Il peut être utilisé pour :
- Détection de thèmes : détecte des objets dans une vidéo. Par exemple : chien, fleur, humain.
- Détection de contenu explicite : détecte le contenu réservé aux adultes dans une vidéo.
- Détection de changements de plans : détecte les changements de scènes dans une vidéo.
L'API REST permet aux utilisateurs d'annoter des vidéos stockées localement ou dans Google Cloud Storage avec des informations contextuelles au niveau de la vidéo entière, par séquence, par prise de vue et par image.
Dans cet atelier de programmation, vous allez vous concentrer sur l'utilisation de l'API Video Intelligence avec C#. Vous apprendrez à analyser les vidéos pour détecter les libellés, les changements de plans et le contenu explicite.
Points abordés
- Utiliser Cloud Shell
- Activer l'API Video Intelligence
- Authentifier les requêtes API
- Installer la bibliothèque cliente Google Cloud pour C#
- Analyser les libellés des vidéos
- Analyser les changements de plans des vidéos
- Analyser des vidéos pour détecter les contenus explicites
Prérequis
- Un projet Google Cloud Platform
- Un navigateur tel que Chrome ou Firefox
- Connaissances de base sur C#
Enquête
Comment allez-vous utiliser ce tutoriel ?
Comment évalueriez-vous votre niveau d'expérience avec C# ?
Quel est votre niveau d'expérience avec les services Google Cloud Platform ?
2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)



- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par
PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Activer Cloud Shell
- Dans Cloud Console, cliquez sur Activer Cloud Shell
.

Si vous démarrez Cloud Shell pour la première fois, un écran intermédiaire s'affiche pour vous expliquer de quoi il s'agit. Si cet écran s'est affiché, cliquez sur Continuer.

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier de programmation dans un navigateur.
Une fois connecté à Cloud Shell, vous êtes en principe authentifié, et le projet est défini avec votre ID de projet.
- Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list
Résultat de la commande
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet :
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si vous obtenez un résultat différent, exécutez cette commande :
gcloud config set project <PROJECT_ID>
Résultat de la commande
Updated property [core/project].
3. Activer l'API Video Intelligence
Avant de pouvoir utiliser l'API Video Intelligence, vous devez l'activer. Vous pouvez activer l'API à l'aide de la commande suivante dans Cloud Shell :
gcloud services enable videointelligence.googleapis.com
4. Installer la bibliothèque cliente de l'API Google Cloud Video Intelligence pour C#
Commencez par créer une application console C# simple que vous utiliserez pour exécuter les exemples de l'API Video Intelligence :
dotnet new console -n VideoIntApiDemo
L'application créée et les dépendances résolues doivent s'afficher :
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Accédez ensuite au dossier VideoIntApiDemo :
cd VideoIntApiDemo/
Ajoutez le package NuGet Google.Cloud.VideoIntelligence.V1 au projet :
dotnet add package Google.Cloud.VideoIntelligence.V1
info : Adding PackageReference for package 'Google.Cloud.VideoIntelligence.V1' into project '/home/atameldev/VideoIntApiDemo/VideoIntApiDemo.csproj'.
log : Restoring packages for /home/atameldev/VideoIntApiDemo/VideoIntApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.VideoIntelligence.V1' version '1.0.0' added to file '/home/atameldev/VideoIntApiDemo/VideoIntApiDemo.csproj'.
Vous êtes maintenant prêt à utiliser l'API Video Intelligence.
5. Détection de thèmes
L'analyse des thèmes détecte les thèmes dans une vidéo stockée localement ou dans Google Cloud Storage. Dans cette section, vous allez analyser les thèmes d'une vidéo stockée dans Google Cloud Storage.
Tout d'abord, ouvrez l'éditeur de code en haut à droite de Cloud Shell :

Accédez au fichier Program.cs dans le dossier VideoIntApiDemo et remplacez le code par ce qui suit :
using System;
using System.Collections.Generic;
using Google.Cloud.VideoIntelligence.V1;
namespace VideoIntApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = VideoIntelligenceServiceClient.Create();
var request = new AnnotateVideoRequest
{
InputUri = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4",
Features = { Feature.LabelDetection }
};
var op = client.AnnotateVideo(request).PollUntilCompleted();
foreach (var result in op.Result.AnnotationResults)
{
PrintLabels("Video", result.SegmentLabelAnnotations);
PrintLabels("Shot", result.ShotLabelAnnotations);
PrintLabels("Frame", result.FrameLabelAnnotations);
}
}
static void PrintLabels(string labelName,
IEnumerable<LabelAnnotation> labelAnnotations)
{
foreach (var annotation in labelAnnotations)
{
Console.WriteLine($"{labelName} label: {annotation.Entity.Description}");
foreach (var entity in annotation.CategoryEntities)
{
Console.WriteLine($"{labelName} label category: {entity.Description}");
}
foreach (var segment in annotation.Segments)
{
Console.Write("Segment location: ");
Console.Write(segment.Segment.StartTimeOffset);
Console.Write(":");
Console.WriteLine(segment.Segment.EndTimeOffset);
Console.WriteLine($"Confidence: {segment.Confidence}");
}
}
}
}
}
Prenez une ou deux minutes pour étudier le code et voir comment la vidéo est étiquetée.
Retournez dans Cloud Shell et exécutez l'application :
dotnet run
L'API Video Intelligence met plusieurs secondes à extraire les libellés, mais vous devriez finir par obtenir le résultat suivant :
Video label: bicycle
Video label category: vehicle
Segment location: "0s":"42.766666s"
Confidence: 0.475821
Video label: tyrannosaurus
Video label category: dinosaur
Segment location: "0s":"42.766666s"
Confidence: 0.4222222
Video label: tree
Video label category: plant
Segment location: "0s":"42.766666s"
Confidence: 0.4231415
...
Résumé
Au cours de cette étape, vous avez pu lister tous les thèmes d'une vidéo à l'aide de l'API Video Intelligence. Pour en savoir plus, consultez la page Détection de libellés.
6. Détection de changements de plan
Vous pouvez utiliser l'API Video Intelligence pour détecter les changements de plans dans une vidéo stockée localement ou dans Google Cloud Storage. Dans cette section, vous allez analyser les changements de plans d'un fichier vidéo se trouvant dans Google Cloud Storage.
Pour détecter les changements de plan, accédez au fichier Program.cs dans le dossier VideoIntApiDemo et remplacez le code par le code suivant :
using System;
using Google.Cloud.VideoIntelligence.V1;
namespace VideoIntApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = VideoIntelligenceServiceClient.Create();
var request = new AnnotateVideoRequest
{
InputUri = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4",
Features = { Feature.ShotChangeDetection }
};
var op = client.AnnotateVideo(request).PollUntilCompleted();
foreach (var result in op.Result.AnnotationResults)
{
foreach (var annotation in result.ShotAnnotations)
{
Console.Out.WriteLine("Start Time Offset: {0}\tEnd Time Offset: {1}",
annotation.StartTimeOffset, annotation.EndTimeOffset);
}
}
}
}
}
Prenez une ou deux minutes pour étudier le code et voir comment la détection des plans est effectuée.
De retour dans Cloud Shell, exécutez l'application. Le résultat suivant devrait s'afficher :
dotnet run
Vous devriez obtenir le résultat suivant :
Start Time Offset: "0s" End Time Offset: "5.166666s"
Start Time Offset: "5.233333s" End Time Offset: "10.066666s"
Start Time Offset: "10.100s" End Time Offset: "28.133333s"
Start Time Offset: "28.166666s" End Time Offset: "42.766666s"
Résumé
Dans cette étape, vous avez pu utiliser l'API Video Intelligence pour détecter les changements de plans dans un fichier stocké dans Google Cloud Storage. En savoir plus sur les modifications de plans
7. Détection de contenu explicite
La détection de contenu explicite détecte le contenu réservé aux adultes dans une vidéo. Le contenu réservé aux adultes est un contenu généralement destiné aux personnes de plus de 18 ans. Il concerne, mais sans s'y limiter, la nudité, les activités sexuelles et la pornographie (y compris dans les dessins animés). La réponse comprend une valeur de probabilité compartimentée, allant de VERY_UNLIKELY à VERY_LIKELY.
Lorsque la fonctionnalité de détection de contenu explicite évalue une vidéo, elle le fait sur la base des images, et ne prend en compte que le contenu visuel. La partie audio de la vidéo n'est pas utilisée pour évaluer le niveau de contenu explicite.
Pour détecter le contenu explicite, accédez au fichier Program.cs dans le dossier VideoIntApiDemo et remplacez le code par le code suivant :
using System;
using Google.Cloud.VideoIntelligence.V1;
namespace VideoIntApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = VideoIntelligenceServiceClient.Create();
var request = new AnnotateVideoRequest
{
InputUri = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4",
Features = { Feature.ExplicitContentDetection }
};
var op = client.AnnotateVideo(request).PollUntilCompleted();
foreach (var result in op.Result.AnnotationResults)
{
foreach (var frame in result.ExplicitAnnotation.Frames)
{
Console.WriteLine("Time Offset: {0}", frame.TimeOffset);
Console.WriteLine("Pornography Likelihood: {0}", frame.PornographyLikelihood);
Console.WriteLine();
}
}
}
}
}
Prenez une ou deux minutes pour étudier le code et voir comment la détection de contenu explicite a été effectuée.
Retournez dans Cloud Shell et exécutez l'application :
dotnet run
Cette opération peut prendre plusieurs secondes, mais vous devriez finir par obtenir le résultat suivant :
dotnet run
Time Offset: "0.056149s"
Pornography Likelihood: VeryUnlikely
Time Offset: "1.166841s"
Pornography Likelihood: VeryUnlikely
...
Time Offset: "41.678209s"
Pornography Likelihood: VeryUnlikely
Time Offset: "42.596413s"
Pornography Likelihood: VeryUnlikely
Résumé
Au cours de cette étape, vous avez pu détecter du contenu explicite dans une vidéo à l'aide de l'API Video Intelligence. En savoir plus sur la détection de contenu explicite
8. Félicitations !
Vous avez appris à utiliser l'API Video Intelligence avec C#.
Effectuer un nettoyage
Afin d'éviter que des frais ne soient facturés sur votre compte Google Cloud Platform pour les ressources utilisées dans ce démarrage rapide, procédez comme suit :
- Accédez à la console Cloud Platform.
- Sélectionnez le projet que vous souhaitez arrêter, puis cliquez sur "Supprimer" en haut de la page. Le projet sera alors programmé pour suppression.
En savoir plus
- API Google Cloud Video Intelligence : https://cloud.google.com/video-intelligence/docs/
- C#/.NET sur Google Cloud Platform : https://cloud.google.com/dotnet/
- Client .NET Google Cloud : https://googlecloudplatform.github.io/google-cloud-dotnet/
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.