1. Übersicht
Mit der Google Cloud Video Intelligence API können Entwickler die Videoanalysetechnologie von Google im Rahmen von Anwendungen nutzen.
Sie können damit Folgendes tun:
- Labelerkennung: Damit erkennen Sie im Video Objekte wie Hunde, Blumen und Menschen.
- Erkennung expliziter Inhalte: Damit finden Sie Inhalte in einem Video, die nur für Erwachsene geeignet sind.
- Erkennung von Szenenwechseln: Damit erkennen Sie Szenenwechsel in einem Video.
Mit der REST API können Nutzer Videos, die lokal oder in Google Cloud Storage gespeichert sind, mit Kontextinformationen versehen, die sich auf das gesamte Video, Segmente, Szenen und Einzelbilder beziehen können.
In diesem Codelab konzentrieren Sie sich auf die Verwendung der Video Intelligence API mit C#. Sie erfahren, wie Sie Videos auf Labels, Szenenwechsel und explizite Inhalte hin analysieren.
Lerninhalte
- Cloud Shell verwenden
- Video Intelligence API aktivieren
- API-Anfragen authentifizieren
- Google Cloud-Clientbibliothek für C# installieren
- Videos auf Labels hin analysieren
- Videos auf Szenenwechsel hin analysieren
- Videos auf explizite Inhalte hin analysieren
Voraussetzungen
Umfrage
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit C# bewerten?
Wie würden Sie Ihre Erfahrungen mit der Verwendung von Google Cloud Platform-Diensten bewerten?
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.

Wenn Sie die Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter.

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklungstools installiert. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie authentifiziert sind und für das Projekt Ihre Projekt-ID eingestellt ist.
- Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. Video Intelligence API aktivieren
Bevor Sie die Video Intelligence API verwenden können, müssen Sie sie aktivieren. Sie können die API mit dem folgenden Befehl in Cloud Shell aktivieren:
gcloud services enable videointelligence.googleapis.com
4. Google Cloud Video Intelligence API-Clientbibliothek für C# installieren
Erstellen Sie zuerst eine einfache C#-Konsolenanwendung, mit der Sie Video Intelligence API-Beispiele ausführen:
dotnet new console -n VideoIntApiDemo
Die Anwendung sollte erstellt und die Abhängigkeiten aufgelöst worden sein:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Rufen Sie als Nächstes den Ordner VideoIntApiDemo auf:
cd VideoIntApiDemo/
Fügen Sie dem Projekt das NuGet-Paket Google.Cloud.VideoIntelligence.V1 hinzu:
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'.
Jetzt können Sie die Video Intelligence API verwenden.
5. Labelerkennung
Bei der Labelanalyse werden Labels in einem Video erkannt, das entweder lokal oder in Google Cloud Storage gespeichert ist. In diesem Abschnitt analysieren Sie ein Video auf Labels, das in Google Cloud Storage gespeichert ist.
Öffnen Sie zuerst den Code-Editor rechts oben in Cloud Shell:

Rufen Sie die Datei Program.cs im Ordner VideoIntApiDemo auf und ersetzen Sie den Code durch Folgendes:
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}");
}
}
}
}
}
Nehmen Sie sich ein bis zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie das Video gekennzeichnet wird.*
Führen Sie die App in Cloud Shell aus:
dotnet run
Es dauert einige Sekunden, bis die Video Intelligence API Labels extrahiert hat. Schließlich sollte die folgende Ausgabe angezeigt werden:
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
...
Zusammenfassung
In diesem Schritt haben Sie alle Labels in einem Video mithilfe der Video Intelligence API aufgelistet. Weitere Informationen finden Sie auf der Seite Labelerkennung.
6. Erkennung von Aufnahmeänderungen
Mit der Video Intelligence API können Sie Szenenwechsel in einem Video erkennen, das lokal oder in Google Cloud Storage gespeichert ist. In diesem Abschnitt analysieren Sie ein Video auf Szenenwechsel hin anhand einer Datei aus Google Cloud Storage.
Um Änderungen an den Einstellungen zu erkennen, rufen Sie die Datei Program.cs im Ordner VideoIntApiDemo auf und ersetzen Sie den Code durch Folgendes:
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);
}
}
}
}
}
Nehmen Sie sich ein bis zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie die Aufnahmeerkennung durchgeführt wird.
Führen Sie die App wieder in Cloud Shell aus. Die folgende Ausgabe sollte angezeigt werden:
dotnet run
Es sollte folgende Ausgabe angezeigt werden:
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"
Zusammenfassung
In diesem Schritt haben Sie die Video Intelligence API verwendet, um Szenenwechsel in einer Datei zu erkennen, die in Google Cloud Storage gespeichert ist. Weitere Informationen zu Aufnahmeänderungen
7. Erkennung expliziter Inhalte
Die Erkennung expliziter Inhalte findet Inhalte in einem Video, die nur für Erwachsene geeignet sind. Inhalte nur für Erwachsene sind im Allgemeinen für Personen ab 18 Jahren geeignet, darunter die Darstellung von Nacktheit sowie sexuelle Aktivitäten und Pornografie (auch in Zeichentrickfilmen und Animes). Die Antwort enthält einen Wahrscheinlichkeitswert in Bucket-Form, der von VERY_UNLIKELY bis VERY_LIKELY reicht.
Die Erkennung anstößiger Inhalte bewertet Videos Bild für Bild, berücksichtigt jedoch nur den visuellen Inhalt. Der Ton des Videos wird bei der Überprüfung auf anstößige Inhalte nicht berücksichtigt.
Um explizite Inhalte zu erkennen, rufen Sie die Datei Program.cs im Ordner VideoIntApiDemo auf und ersetzen Sie den Code durch Folgendes:
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();
}
}
}
}
}
Nehmen Sie sich ein bis zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie die Erkennung expliziter Inhalte durchgeführt wurde.*
Führen Sie die App in Cloud Shell aus:
dotnet run
Das kann einige Sekunden dauern. Schließlich sollte aber die folgende Ausgabe angezeigt werden:
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
Zusammenfassung
In diesem Schritt haben Sie mithilfe der Video Intelligence API anstößige Inhalte in einem Video erkannt. Weitere Informationen zur Erkennung expliziter Inhalte
8. Glückwunsch!
Sie haben gelernt, wie Sie die Video Intelligence API mit C# verwenden.
Bereinigen
So vermeiden Sie, dass Ihr Google Cloud Platform-Konto für die in diesem Schnellstart verwendeten Ressourcen belastet wird:
- Rufen Sie die Cloud Platform Console auf.
- Wählen Sie das Projekt aus, das Sie beenden möchten, und klicken Sie oben auf „Löschen“. Das Projekt wird dann zum Löschen geplant.
Weitere Informationen
- Google Cloud Video Intelligence API: https://cloud.google.com/video-intelligence/docs/
- C#/.NET auf der Google Cloud Platform: https://cloud.google.com/dotnet/
- Google Cloud .NET-Client: https://googlecloudplatform.github.io/google-cloud-dotnet/
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.