1. Übersicht
Mit der Google Cloud Video Intelligence API können Entwickler die Videoanalysetechnologie von Google als Teil ihrer Anwendungen nutzen.
Sie können damit Folgendes tun:
- Labelerkennung: Erkennt im Video Objekte wie Hunde, Blumen oder 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 für das gesamte Video, für jedes Segment, pro Aufnahme und pro Frame gelten.
In diesem Codelab erfahren Sie, wie Sie die Video Intelligence API mit C# verwenden. Sie erfahren, wie Sie Videos auf Labels, Szenenwechsel und Erkennung expliziter Inhalte analysieren.
Aufgaben in diesem Lab
- 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 zur Erkennung expliziter Inhalte analysieren
Voraussetzungen
Umfrage
Wie möchten Sie diese Anleitung nutzen?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrung mit C# bewerten?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud Platform-Diensten bewerten?
<ph type="x-smartling-placeholder">2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
- Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als
PROJECT_ID
bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten. - Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.
Cloud Shell starten
Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren .
Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.
Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.
Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.
- Führen Sie in 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 in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob 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 erstellte Anwendung und die Abhängigkeiten sollten aufgelöst werden:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Gehen Sie dann zum Ordner VideoIntApiDemo
:
cd VideoIntApiDemo/
Fügen Sie dem Projekt außerdem 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, die in Google Cloud Storage gespeichert sind.
Öffnen Sie zuerst oben rechts in Cloud Shell den Code-Editor:
Gehen Sie zur Datei Program.cs
im Ordner VideoIntApiDemo
und ersetzen Sie den Code durch folgenden Code:
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}");
}
}
}
}
}
Nimm dir ein oder zwei Minuten Zeit, um den Code zu studieren und zu sehen, wie das Video beschriftet ist*.*
Führen Sie die Anwendung in Cloud Shell aus:
dotnet run
Das Extrahieren von Labels durch die Video Intelligence API dauert einige Sekunden. Am Ende sollten Sie jedoch die folgende Ausgabe sehen:
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 konnten Sie mithilfe der Video Intelligence API alle Labels in einem Video auflisten. Weitere Informationen finden Sie auf der Seite Labelerkennung.
6. Erkennung von Aufnahmeänderungen
Sie können die Video Intelligence API verwenden, um Szenenwechsel in einem Video zu erkennen, das lokal oder in Google Cloud Storage gespeichert ist. In diesem Abschnitt führen Sie eine Videoanalyse auf Szenenwechsel in einer Datei in Google Cloud Storage durch.
Um Szenenwechsel zu erkennen, navigieren Sie im Ordner VideoIntApiDemo
zur Datei Program.cs
und ersetzen Sie den Code durch den folgenden Code:
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 den Code zu untersuchen und zu sehen, wie die Szenenerkennung durchgeführt wird.
Führen Sie die Anwendung in Cloud Shell aus. Sie sollten die folgende Ausgabe sehen:
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 konnten Sie mithilfe der Video Intelligence API Szenenwechsel in einer in Google Cloud Storage gespeicherten Datei erkennen. 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 Nacktheit, sexuelle Aktivitäten und Pornografie, auch in Cartoons und Animes. Die Antwort enthält einen Wahrscheinlichkeitswert in Bucket-Form, der von VERY_UNLIKELY bis VERY_LIKELY liegt.
Bei der Erkennung expliziter Inhalte wird ein Video pro Frame ausgewertet. Dabei werden nur visuelle Inhalte berücksichtigt. Die Audiokomponente des Videos wird nicht zur Beurteilung von expliziten Inhalten verwendet.
Wenn explizite Inhalte erkannt werden sollen, rufen Sie die Datei Program.cs
im Ordner VideoIntApiDemo
auf und ersetzen Sie den Code durch den folgenden Code:
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 den Code zu untersuchen und zu sehen, wie die Erkennung expliziter Inhalte durchgeführt wurde*.*
Führen Sie die Anwendung in Cloud Shell aus:
dotnet run
Dies kann einige Sekunden dauern, aber schließlich sollten Sie die folgende Ausgabe sehen:
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 konnten Sie mithilfe der Video Intelligence API explizite Inhalte in einem Video erkennen. Weitere Informationen zur Erkennung expliziter Inhalte
8. Glückwunsch!
Jetzt wissen Sie, 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 auf „Löschen“. oben: Dadurch wird das Projekt zum Löschen vorgemerkt.
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.