Redact-Gesichter mithilfe der Azure AI Video Indexer-API
Sie können azure AI Video Indexer verwenden, um Gesichter im Video zu erkennen und zu identifizieren. Um Ihr Video so zu ändern, dass Gesichter bestimmter Personen weichzeichnen (redact) werden, können Sie die API verwenden.
Ein paar Minuten Filmmaterial, das mehrere Gesichter enthält, kann Stunden dauern, um manuell zu redagieren, aber durch Die Verwendung von Voreinstellungen in der Videoindexer-API erfordert der Gesichts redaction-Prozess nur einige einfache Schritte.
In diesem Artikel erfahren Sie, wie Sie Gesichter mithilfe einer API rotieren. Die Videoindexer-API enthält eine Face Redaction-Voreinstellung , die skalierbare Gesichtserkennung und -redaction (verschwommen) in der Cloud bietet. Der Artikel veranschaulicht jeden Schritt, wie Gesichter mithilfe der API detailliert gerotiert werden.
Das folgende Video zeigt, wie Sie ein Video mithilfe der Azure AI Video Indexer-API redigieren.
Compliance, Datenschutz und Sicherheit
Als wichtige Erinnerung müssen Sie alle anwendbaren Gesetze in Ihrer Nutzung von Analysen oder Erkenntnissen einhalten, die Sie mithilfe von VideoIndexer ableiten.
Der Gesichtsdienstzugriff ist auf der Grundlage von Berechtigungs- und Nutzungskriterien beschränkt, um die Microsoft Responsible AI-Prinzipien zu unterstützen. Der Gesichtsdienst ist nur für von Microsoft verwaltete Kunden und Partner verfügbar. Verwenden Sie das Aufnahmeformular für die Gesichtserkennung, um sich für den Zugriff zu bewerben. Weitere Informationen finden Sie auf der Seite Eingeschränkter Zugriff auf die Gesichtserkennung.
Terminologie und Hierarchie der Redaction
Gesichts redaction in Video Indexer basiert auf der Ausgabe vorhandener VideoIndexer Gesichtserkennungsergebnisse, die wir in unseren Video Standard- und Advanced Analysis-Voreinstellungen bereitstellen.
Um ein Video zu redactieren, müssen Sie zuerst ein Video in den Videoindexer hochladen und eine Analyse mithilfe der Standard- oder Advanced-Videovoreinstellungen durchführen. Dazu können Sie die Azure AI Video Indexer-Website oder API verwenden. Anschließend können Sie mithilfe des videoId
Werts die Face Redaction-API verwenden, um auf dieses Video zu verweisen. Wir erstellen ein neues Video, in dem die angegebenen Gesichter redigiert sind. Sowohl die Videoanalyse als auch die Gesichtsrotaktion sind separate abrechnende Aufträge. Weitere Informationen finden Sie auf unserer Preisseite.
Verschwommene Typen
Sie können aus verschiedenen Arten von Verschwommenen in Gesichtsrotierung wählen. Verwenden Sie zum Auswählen eines Typs einen Namen oder eine repräsentative Nummer für den blurringKind
Parameter im Anforderungstext:
blurringKind-Zahl | verschwommenerKind-Name | Beispiel |
---|---|---|
0 | MediumBlur | |
1 | HighBlur | |
2 | LowBlur | |
3 | BoundingBox | |
4 | Schwarz |
Sie können die Art der Verschwommenkeit im Anforderungstext mithilfe des blurringKind
Parameters angeben.
Hier sehen Sie ein Beispiel:
{
"faces": {
"blurringKind": "HighBlur"
}
}
Oder verwenden Sie eine Zahl, die den Typ der Unscharfung darstellt, die in der vorherigen Tabelle beschrieben wird:
{
"faces": {
"blurringKind": 1
}
}
Filter
Sie können Filter anwenden, um festzulegen, welche Gesichts-IDs weichzeichnen. Sie können die IDs der Gesichter in einem durch Trennzeichen getrennten Array im Textkörper der JSON-Datei angeben. Verwenden Sie den scope
Parameter, um diese Gesichter für Die Redaction auszuschließen oder einzuschließen. Durch Angeben von IDs können Sie entweder alle Gesichter mit Ausnahme der IDs, die Sie angeben, oder nur diese IDs redigieren. Beispiele finden Sie in den nächsten Abschnitten.
Bereich ausschließen
Wenn Sie im folgenden Beispiel alle Gesichter mit Ausnahme von Gesichts-IDs 1001 und 1016 rotieren möchten, verwenden Sie den Exclude
Bereich:
{
"faces": {
"blurringKind": "HighBlur",
"filter": {
"ids": [1001, 1016],
"scope": "Exclude"
}
}
}
Bereich einschließen
Verwenden Sie Include
im folgenden Beispiel den Bereich, um nur die IDs 1001 und 1016 zu rotieren:
{
"faces": {
"blurringKind": "HighBlur",
"filter": {
"ids": [1001, 1016],
"scope": "Include"
}
}
}
Alle Gesichter rotieren
Um alle Gesichter zu rotieren, entfernen Sie den Bereichsfilter:
{
"faces": {
"blurringKind": "HighBlur",
}
}
Um eine Gesichts-ID abzurufen, können Sie zum indizierten Video wechseln und die Artefaktdatei abrufen. Das Artefakt enthält eine faces.json Datei und eine Miniaturansicht .zip Datei mit allen Gesichtern, die im Video erkannt wurden. Sie können das Gesicht mit der ID abgleichen und entscheiden, welche Gesichts-IDs redigiert werden sollen.
Erstellen eines Redaction-Auftrags
Um einen Redaction-Auftrag zu erstellen, können Sie den folgenden API-Aufruf aufrufen:
POST https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/redact[?name][&priority][&privacy][&externalId][&streamingPreset][&callbackUrl][&accessToken]
Die folgenden Werte sind erforderlich:
Name | Wert | Beschreibung |
---|---|---|
Accountid |
{accountId} |
Die ID Ihres Videoindexer-Kontos. |
Location |
{location} |
Die Azure-Region, in der sich Ihr Videoindexer-Konto befindet. Beispiel: Westus. |
AccessToken |
{token} |
Das Token, das über die Rest-API des Azure Resource Manager generiert wurde, über die Rechte von Kontomitwirkenden verfügt. |
Videoid |
{videoId} |
Die Video-ID des Quellvideos, um zu redact. Sie können die Video-ID mithilfe der Listenvideo-API abrufen. |
Name |
{name} |
Der Name des neuen, redacted-Videos. |
Hier ist ein Beispiel für eine Anforderung:
https://api.videoindexer.ai/westeurope/Accounts/{id}/Videos/{id}/redact?priority=Low&name=testredaction&privacy=Private&streamingPreset=Default
Sie können das Token als Autorisierungsheader angeben, der über einen Schlüsselwerttyp verfügt bearertoken:{token}
, oder Sie können es als Abfrageparameter mithilfe von ?token={token}
.
Außerdem müssen Sie einen Anforderungstext im JSON-Format mit den anzuwendenden Redaction-Auftragsoptionen hinzufügen. Hier sehen Sie ein Beispiel:
{
"faces": {
"blurringKind": "HighBlur"
}
}
Wenn die Anforderung erfolgreich ist, erhalten Sie die Antwort HTTP 202 ACCEPTED
.
Auftragsstatus überwachen
In der Antwort der Auftragserstellungsanforderung erhalten Sie einen HTTP-Header Location
mit einer URL zum Auftrag. Sie können dasselbe Token verwenden, um eine GET-Anforderung an diese URL zu stellen, um den Status des Redaction-Auftrags anzuzeigen.
Hier ist eine Beispiel-URL:
https://api.videoindexer.ai/westeurope/Accounts/<id>/Jobs/<id>
Hier sehen Sie eine Beispielantwort:
{
"creationTime": "2023-05-11T11:22:57.6114155Z",
"lastUpdateTime": "2023-05-11T11:23:01.7993563Z",
"progress": 20,
"jobType": "Redaction",
"state": "Processing"
}
Wenn Sie dieselbe URL aufrufen, wenn der Redaction-Auftrag abgeschlossen ist, erhalten Sie in der Location
Kopfzeile eine SAS-URL (Storage Shared Access Signature) zum redacted Video. Zum Beispiel:
https://api.videoindexer.ai/westeurope/Accounts/<id>/Videos/<id>/SourceFile/DownloadUrl
Diese URL leitet an die .mp4 Datei weiter, die im Azure Storage-Konto gespeichert ist.
Häufig gestellte Fragen
Frage | Antwort |
---|---|
Kann ich ein Video hochladen und in einem Vorgang redact? | Nein Sie müssen ein Video zuerst mithilfe der Videoindexer-API hochladen und analysieren. Verweisen Sie dann in Ihrem Redaction-Auftrag auf das indizierte Video. |
Kann ich die Azure AI Video Indexer-Website verwenden, um ein Video zu redactieren? | Nein Derzeit können Sie nur die API verwenden, um einen Redaction-Auftrag zu erstellen. |
Kann ich das bearbeitete Video mithilfe der Videoindexer-Website wiedergeben? | Ja. Das abgeblendete Video ist auf der Videoindexer-Website wie jedes andere indizierte Video sichtbar, enthält jedoch keine Einblicke. |
Gewusst wie ein geschwenktes Video löschen? | Sie können die Löschvideo-API verwenden und den Videoid Wert für das bearbeitete Video bereitstellen. |
Muss ich gesichtsidentifikationsgating übergeben, um Gesichtsrotaktionen zu verwenden? | Sofern Sie keine Polizeiabteilung im USA vertreten, nein. Auch wenn Sie gated sind, bieten wir weiterhin Gesichtserkennung an. Wir bieten keine Gesichtsidentifikation an, wenn Sie gated sind. Sie können jedoch alle Gesichter in einem Video rotieren, indem Sie nur die Gesichtserkennung verwenden. |
Wird mein originales Video überschrieben? | Nein Der Auftrag zur Gesichtsausrichtung erstellt eine neue Videoausgabedatei. |
Nicht alle Gesichter sind richtig gerotet. Was kann ich tun? | Redaction basiert auf der anfänglichen Gesichtserkennung und Erkennungsausgabe der Analysepipeline. Obwohl wir alle Gesichter meistens erkennen, gibt es Situationen, in denen wir kein Gesicht erkennen können. Faktoren wie Gesichtswinkel, die Anzahl der Frames, die das Gesicht vorhanden ist, und die Qualität des Quellvideos wirkt sich auf die Qualität der Gesichtsrotaktion aus. Weitere Informationen finden Sie unter Face Insights. |
Kann ich andere Objekte als Gesichter rotieren? | Nein Derzeit bieten wir nur Eine redaction an. Wenn Sie andere Objekte redigieren müssen, können Sie Feedback zu unserem Produkt im Azure User Voice-Kanal geben. |
Wie lange ist eine SAS-URL gültig, um das bearbeitete Video herunterzuladen? | Um das bearbeitete Video herunterzuladen, nachdem die SAS-URL abgelaufen ist, müssen Sie die URL für den anfänglichen Auftragsstatus aufrufen. Es ist am besten, diese Jobstatus URLs in einer Datenbank in Ihrem Back-End für zukünftige Verweise zu speichern. |
Fehlercodes
In den folgenden Abschnitten werden Fehler beschrieben, die auftreten können, wenn Sie gesichtsrote Aktionen verwenden.
Antwort: 404 nicht gefunden
Das Konto wurde nicht gefunden, oder das Video wurde nicht gefunden.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
x-ms-request-id |
false | Zeichenfolge | Eine GUID (Globally Unique Identifier) für die Anforderung wird vom Server zu Instrumentierungszwecken zugewiesen. Der Server stellt sicher, dass alle Protokolle, die der Verarbeitung der Anforderung zugeordnet sind, mit der Serveranforderungs-ID verknüpft werden können. Ein Client kann diese Anforderungs-ID in einem Supportticket bereitstellen, sodass Supporttechniker die Protokolle finden können, die mit dieser spezifischen Anforderung verknüpft sind. Der Server stellt sicher, dass die Anforderungs-ID für jeden Auftrag eindeutig ist. |
Antworttext
Name | Erforderlich | type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | Zeichenfolge |
Standard-JSON
{
"ErrorType": "GENERAL",
"Message": "string"
}
Antwort: 400 Ungültige Anforderung
Ungültige Eingaben oder können das Video nicht redigieren, da der ursprüngliche Upload fehlgeschlagen ist. Bitte laden Sie das Video erneut hoch.
Ungültige Eingabe oder kann das Video nicht redigieren, da der ursprüngliche Upload fehlgeschlagen ist. Laden Sie das Video erneut hoch.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
x-ms-request-id |
false | Zeichenfolge | Eine GUID für die Anforderung wird vom Server für Instrumentierungszwecke zugewiesen. Der Server stellt sicher, dass alle Protokolle, die der Verarbeitung der Anforderung zugeordnet sind, mit der Serveranforderungs-ID verknüpft werden können. Ein Client kann diese Anforderungs-ID in einem Supportticket bereitstellen, sodass Supporttechniker die Protokolle finden können, die mit dieser spezifischen Anforderung verknüpft sind. Der Server stellt sicher, dass die Anforderungs-ID für jeden Auftrag eindeutig ist. |
Antworttext
Name | Erforderlich | type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | Zeichenfolge |
Standard-JSON
{
"ErrorType": "GENERAL",
"Message": "string"
}
Antwort: 409 Konflikt
Das Video wird bereits indiziert.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
x-ms-request-id |
false | Zeichenfolge | Eine GUID für die Anforderung wird vom Server für Instrumentierungszwecke zugewiesen. Der Server stellt sicher, dass alle Protokolle, die der Verarbeitung der Anforderung zugeordnet sind, mit der Serveranforderungs-ID verknüpft werden können. Ein Client kann diese Anforderungs-ID in einem Supportticket bereitstellen, sodass Supporttechniker die Protokolle finden können, die mit dieser spezifischen Anforderung verknüpft sind. Der Server stellt sicher, dass die Anforderungs-ID für jeden Auftrag eindeutig ist. |
Antworttext
Name | Erforderlich | type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | Zeichenfolge |
Standard-JSON
{
"ErrorType": "GENERAL",
"Message": "string"
}
Antwort: 401 Nicht autorisiert
Das Zugriffstoken ist nicht für den Zugriff auf das Konto autorisiert.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
x-ms-request-id |
false | Zeichenfolge | Eine GUID für die Anforderung wird vom Server für Instrumentierungszwecke zugewiesen. Der Server stellt sicher, dass alle Protokolle, die der Verarbeitung der Anforderung zugeordnet sind, mit der Serveranforderungs-ID verknüpft werden können. Ein Client kann diese Anforderungs-ID in einem Supportticket bereitstellen, sodass Supporttechniker die Protokolle finden können, die mit dieser spezifischen Anforderung verknüpft sind. Der Server stellt sicher, dass die Anforderungs-ID für jeden Auftrag eindeutig ist. |
Antworttext
Name | Erforderlich | type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | Zeichenfolge |
Standard-JSON
{
"ErrorType": "USER_NOT_ALLOWED",
"Message": "Access token is not authorized to access account 'SampleAccountId'."
}
Antwort: 500 Interner Serverfehler
Fehler auf dem Server.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
x-ms-request-id |
false | Zeichenfolge | Eine GUID für die Anforderung wird vom Server für Instrumentierungszwecke zugewiesen. Der Server stellt sicher, dass alle Protokolle, die der Verarbeitung der Anforderung zugeordnet sind, mit der Serveranforderungs-ID verknüpft werden können. Ein Client kann diese Anforderungs-ID in einem Supportticket bereitstellen, sodass Supporttechniker die Protokolle finden können, die mit dieser spezifischen Anforderung verknüpft sind. Der Server stellt sicher, dass die Anforderungs-ID für jeden Auftrag eindeutig ist. |
Antworttext
Name | Erforderlich | type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | Zeichenfolge |
Standard-JSON
{
"ErrorType": "GENERAL",
"Message": "There was an error."
}
Antwort: 429 Zu viele Anforderungen
Zu viele Anforderungen wurden gesendet. Verwenden Sie den Retry-After
Antwortheader, um zu entscheiden, wann die nächste Anforderung gesendet werden soll.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
Retry-After |
false | integer | Eine nicht negative Dezimalzahl, die die Anzahl der Sekunden angibt, die nach dem Empfang der Antwort verzögert werden sollen. |
Antwort: 504 GatewayTimeout
Der Server reagierte nicht innerhalb der erwarteten Zeit auf das Gateway.
Antwortheader
Name | Erforderlich | Type | Beschreibung |
---|---|---|---|
x-ms-request-id |
false | Zeichenfolge | Eine GUID für die Anforderung wird vom Server für Instrumentierungszwecke zugewiesen. Der Server stellt sicher, dass alle Protokolle, die der Verarbeitung der Anforderung zugeordnet sind, mit der Serveranforderungs-ID verknüpft werden können. Ein Client kann diese Anforderungs-ID in einem Supportticket bereitstellen, sodass Supporttechniker die Protokolle finden können, die mit dieser spezifischen Anforderung verknüpft sind. Der Server stellt sicher, dass die Anforderungs-ID für jeden Auftrag eindeutig ist. |
Standard-JSON
{
"ErrorType": "SERVER_TIMEOUT",
"Message": "Server did not respond to gateway within expected time"
}