Zielgruppe
In dieser Anleitung erfahren Sie, wie Sie Anwendungen mit der Video Intelligence API entdecken und entwickeln. Sie wurde für Personen entwickelt, die mit den Grundlagen von Python vertraut sind. Sie sollten auch in der Lage sein, begrenzte Programmierkenntnisse zu nutzen. Nachdem Sie die Anleitung durchgegangen sind, sollten Sie in der Lage sein, mithilfe der Referenzdokumentation Ihre eigenen grundlegenden Anwendungen zu erstellen.
In dieser Anleitung wird die Verwendung der Video Intelligence API mit Python-Code schrittweise erläutert. Dabei wird nicht erläutert, wie die Python-Clientbibliotheken funktionieren, sondern wie Aufrufe der Video Intelligence API mithilfe der Video-Label-Erkennungsfunktion aufgerufen werden. Anwendungen in Java und Node.js verhalten sich im Wesentlichen ähnlich.
Wenn Sie ein reines Code-Beispiel oder ein Beispiel in einer anderen Sprache benötigen, lesen Sie im Handbuch nach.
Vorbereitung
Für diese Anleitung gelten die folgenden Voraussetzungen:
- Sie haben ein Video Intelligence API-Projekt in der Google Cloud Console eingerichtet.
- Sie haben Ihre Umgebung mithilfe eines Dienstkontos und Standardanmeldedaten für Anwendungen eingerichtet.
- Sie verfügen über Grundkenntnisse des Programmierens mit Python.
- Sie haben Ihre Python-Entwicklungsumgebung eingerichtet.
Es wird empfohlen, die neueste Version von Python,pip
, undvirtualenv
auf Ihrem System zu installieren. Anweisungen finden Sie in der Installationsanleitung zur Python-Entwicklungsumgebung für Google Cloud. - Sie haben die Google Cloud-Clientbibliothek installiert.
Mit der Labelerkennung Annotationen in ein Video einfügen
In dieser Anleitung werden Sie mithilfe einer LABEL_DETECTION
-Anfrage durch eine einfache Video API-Anwendung geleitet. In der LABEL_DETECTION
-Anfrage wird ein Video mit Labels (bzw. "Tags") annotiert, die auf Grundlage des Bildinhalts ausgewählt werden. Zum Beispiel können für ein Video von einem Zug an einem Bahnübergang Labels wie "Zug", "Verkehr", "Bahnübergang" erzeugt werden.
Der folgende Code ist für diese Anleitung erforderlich. Die meisten Kommentare wurden aus diesem Code entfernt, um hervorzuheben, wie kurz der Code ist. Stattdessen werden Kommentare später bereitgestellt, während wir den Code durchgehen.
Diese einfache Anwendung:
- Importiert die für die Ausführung der Anwendung erforderlichen Bibliotheken
- Nimmt eine im Cloud Storage-URI gespeicherte Videodatei als Argument an die
main()
-Funktion. - Ruft Anmeldeinformationen zum Ausführen des Diensts der Video Intelligence API ab
- Erstellt eine Anfrage nach Videoanmerkungen, die an den Videodienst gesendet wird
- Sendet die Anfrage und gibt einen lange laufenden Vorgang zurück
- Stellt den lang andauernden Vorgang in eine Warteschleife, bis das Video verarbeitet wurde, und gibt verfügbare Werte zurück.
- Analysiert die Antwort des Diensts und zeigt dem Nutzer die Antwort an
Bibliotheken importieren
Einige Standardbibliotheken werden importiert: argparse
, damit die Anwendung Eingabedateinamen als Argumente akzeptieren kann, und sys
für die Formatierung der Ausgabe, während auf die Antworten der API gewartet wird. Das Paket time
wird importiert, um einige einfache Warteschleifen auszuführen.
Wenn Sie die Video Intelligence API verwenden, müssen Sie auch google.cloud.videointelligence_v1
und die Aufzählungsklasse importieren, die das Verzeichnis unserer API-Aufrufe enthält.
Anwendung ausführen
Hier wird das übergebene Argument für den Cloud Storage-URI des Namens der Videodatei geparst und an die Funktion main()
übergeben.
Bei der API authentifizieren
Bevor Sie mit dem Dienst der Video Intelligence API kommunizieren, müssen Sie den Dienst mithilfe zuvor erworbener Anmeldeinformationen authentifizieren. Innerhalb einer Anwendung erhalten Sie die Anmeldedaten am einfachsten über die Verwendung der Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC). Standardmäßig ruft ADC die Anmeldedaten von der GOOGLE_APPLICATION_CREDENTIALS
-Umgebungsdatei ab, die so festgelegt sein muss, dass sie auf die JSON-Schlüsseldatei Ihres Dienstkontos verweist. (Sie müssen Ihr Dienstkonto und die Umgebung, wie in der Kurzanleitung beschrieben, zur Verwendung von ADC eingerichtet haben.
Erstellen Sie die Anfrage
Jetzt, da der Dienst der Video Intelligence API bereit ist, können Sie eine Anfrage für diesen Dienst erstellen. Anfragen an die Video Intelligence API werden als JSON-Objekte bereitgestellt. Vollständige Informationen zur spezifischen Struktur einer solchen Anfrage finden Sie in der Video Intelligence API-Referenz.
Dieses Code-Snippet:
- Konstruiert das JSON für eine POST-Anfrage an die Methode
annotate_video()
- Fügt den Cloud Storage-Speicherort des übergebenen Videodateinamens in die Anfrage ein.
- Gibt an, dass die Methode
annotate
die AnfrageLABEL_DETECTION
ausführen soll.
Prüfen Sie den Vorgang
Unter Verwendung der Anfrage für den vorhandenen Vorgang wird eine while
-Schleife erstellt, um den Status dieses Vorgangs regelmäßig zu prüfen. Sobald der Vorgang den Status done
angibt, wird die Antwort geparst.
Antwort parsen
Nach Abschluss des Vorgangs wird in der Antwort das Ergebnis innerhalb einer AnnotateVideoResponse zurückgegeben. Diese besteht aus einer Liste von annotationResults
, einer für jedes in der Anfrage gesendete Video. Da in der Anfrage nur ein Video gesendet wurde, wird das erste segmentLabelAnnotations
der Ergebnisse übernommen und alle Labels in segmentLabelAnnotations
werden durchlaufen. Wenn Sie nur segmentLabelAnnotations
verwenden, werden in dieser Anleitung nur Annotationen auf Videoebene angezeigt.
Jedes segment_label
enthält eine Beschreibung (segment_label.description
), eine Liste von Entitätskategorien (segment_label.category_entities
) und eine Liste von Segmenten, die die Start-/Endzeit der Labelvorkommen im Video identifizieren (sollte ein Segment sein, das sich über das gesamte Video oder ein Videosegment im Fall von segment_label_annotations
erstreckt).
{ "name":"us-west1.12089999971048628582", "metadata":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress":[ { "inputUri":"gs://YOUR_BUCKET/YOUR_OBJECT", "updateTime":"2020-01-31T01:49:52.498015Z", "startTime":"2020-01-31T01:49:43.056481Z" } ] }, "done": true, "response":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults":[ { "inputUri":"gs://YOUR_BUCKET/YOUR_OBJECT", "segmentLabelAnnotations": [ { "entity": { "entityId": "/m/01yrx", "languageCode": "en-US" }, "segments": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "14.833664s" }, "confidence": 0.98509187 } ] }, ... ] } ] } }
Da in der Anfrage nur ein Video gesendet wurde, wird das erste description
des ersten Ergebnisses ausgegeben.
Führen Sie Ihre Anwendung aus
Sie können die Anwendung starten, indem Sie einfach den Cloud Storage-URI eines Videos übergeben:
$ python labels.py gs://YOUR_BUCKET/YOUR_OBJECT Operation us-west1.4757250774497581229 started: 2020-01-30T01:46:30.158989Z Operation processing ... The video has been successfully processed. Video label description: urban area Label category description: city Segment 0: 0.0s to 38.752016s Confidence: 0.946980476379 Video label description: traffic Segment 0: 0.0s to 38.752016s Confidence: 0.94105899334 Video label description: vehicle Segment 0: 0.0s to 38.752016s Confidence: 0.919958174229 ...
Ausgabe
Im Folgenden finden Sie ein Beispiel für eine mögliche Ausgabe.
Processing video for label annotations:Finished processing. Video label description: crowd Label category description: people Segment 0: 0.0s to 60.24s Confidence: 0.527720749378
Video label description: official Label category description: person Segment 0: 0.0s to 60.24s Confidence: 0.372822880745
Video label description: audience Label category description: people Segment 0: 0.0s to 60.24s Confidence: 0.501719772816
Video label description: news Segment 0: 0.0s to 60.24s Confidence: 0.867252230644
Video label description: people Label category description: person Segment 0: 0.0s to 60.24s Confidence: 0.46747264266
Video label description: politics Segment 0: 0.0s to 60.24s Confidence: 0.319397002459
Das wars! Sie haben eine Annotationsaufgabe mit der Video Intelligence API ausgeführt.