Dela via


Redigera ansikten med hjälp av Azure AI Video Indexer API

Du kan använda Azure AI Video Indexer för att identifiera ansikten i video. Om du vill ändra videon till att sudda ut (redigera) ansikten för specifika individer kan du använda API: et.

Några minuters filmklipp som innehåller flera ansikten kan ta timmar att redigera manuellt, men genom att använda förinställningar i Video Indexer API kräver ansiktsredigeringsprocessen bara några enkla steg.

Den här artikeln visar hur du redigerar ansikten med hjälp av ett API. Video Indexer API innehåller en förinställning för ansiktsredigering som erbjuder skalbar ansiktsidentifiering och redigering (suddighet) i molnet. Artikeln visar varje steg i hur du redigerar ansikten med hjälp av API:et i detalj.

Följande video visar hur du redigerar en video med hjälp av Azure AI Video Indexer API.

Efterlevnad, sekretess och säkerhet

Som en viktig påminnelse måste du följa alla tillämpliga lagar i din användning av analyser eller insikter som du härleder med hjälp av Video Indexer.

Åtkomsten till ansiktstjänsten är begränsad baserat på berättigande- och användningskriterier för att stödja Principerna för Microsofts ansvarsfulla AI. Ansiktstjänsten är endast tillgänglig för Microsofts hanterade kunder och partner. Använd formuläret ansiktsigenkänning för att ansöka om åtkomst. Mer information finns på sidan ansiktsbegränsade åtkomst.

Terminologi och hierarki för ansiktsredigering

Ansiktsredigering i Video Indexer förlitar sig på utdata från befintliga Video Indexer-ansiktsidentifieringsresultat som vi tillhandahåller i våra förinställningar för Video Standard och Avancerad analys.

Om du vill redigera en video måste du först ladda upp en video till Video Indexer och slutföra en analys med hjälp av standard - eller avancerade videoförinställningar. Du kan göra detta med hjälp av Webbplatsen eller API:et för Azure AI Video Indexer. Du kan sedan använda ansiktsredigerings-API:et videoId för att referera till videon med hjälp av värdet. Vi skapar en ny video där de angivna ansiktena redigeras. Både videoanalysen och ansiktsredigeringen är separata fakturerbara jobb. Mer information finns på vår prissida.

Typer av suddighet

Du kan välja mellan olika typer av suddighet i ansiktsredigering. Om du vill välja en typ använder du ett namn eller ett representativt nummer för parametern blurringKind i begärandetexten:

blurringKind-nummer blurringKind-namn Exempel
0 MediumBlur Foto av Azure AI Video Indexer medeloskärpa.
1 HighBlur Foto av Azure AI Video Indexer med hög oskärpa.
2 LowBlur Foto av Azure AI Video Indexer låg oskärpa.
3 Avgränsningsruta Foto av Avgränsningsrutor för Azure AI Video Indexer.
4 Svart Foto av svarta rutor i Azure AI Video Indexer.

Du kan ange typen av suddighet i begärandetexten med hjälp av parametern blurringKind .

Här är ett exempel:

{
    "faces": {
        "blurringKind": "HighBlur"
    }
}

Du kan också använda ett tal som representerar den typ av suddighet som beskrivs i föregående tabell:

{
    "faces": {
        "blurringKind": 1
    }
}

Filter

Du kan använda filter för att ange vilka ansikts-ID:er som ska suddas ut. Du kan ange ID:t för ansikten i en kommaavgränsad matris i JSON-filens brödtext. Använd parametern scope för att exkludera eller inkludera dessa ansikten för redigering. Genom att ange ID:t kan du antingen redigera alla ansikten utom de ID:t som du anger eller redigera endast dessa ID:er. Se exempel i nästa avsnitt.

Exkludera omfång

Använd omfånget för att redigera alla ansikten utom ansikts-ID:t 1001 och 1016 i Exclude följande exempel:

{
    "faces": {
        "blurringKind": "HighBlur",
        "filter": {
            "ids": [1001, 1016],
            "scope": "Exclude"
        }
    }
}

Inkludera omfång

I följande exempel använder du omfånget Include för att redigera endast ansikts-ID:t 1001 och 1016:

{
    "faces": {
        "blurringKind": "HighBlur",
        "filter": {
            "ids": [1001, 1016],
            "scope": "Include"
        }
    }
}

Redigera alla ansikten

Om du vill redigera alla ansikten tar du bort omfångsfiltret:

{
    "faces": {
        "blurringKind": "HighBlur",
    }
}

Om du vill hämta ett ansikts-ID kan du gå till den indexerade videon och hämta artefaktfilen. Artefakten innehåller en faces.json fil och en miniatyrbild .zip fil med alla ansikten som har identifierats i videon. Du kan matcha ansiktet mot ID:t och bestämma vilka ansikts-ID:t som ska redigeras.

Skapa ett redigeringsjobb

Om du vill skapa ett redigeringsjobb kan du anropa följande API-anrop:

POST https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/redact[?name][&priority][&privacy][&externalId][&streamingPreset][&callbackUrl][&accessToken]

Följande värden krävs:

Name Värde beskrivning
Accountid {accountId} ID för ditt Video Indexer-konto.
Location {location} Den Azure-region där ditt Video Indexer-konto finns. Till exempel westus.
AccessToken {token} Token som har kontodeltagarerättigheter som genererats via REST-API:et för Azure Resource Manager .
Videoid {videoId} Video-ID:t för källvideon som ska redigeras. Du kan hämta video-ID:t med hjälp av API:et Listvideo .
Name {name} Namnet på den nya, redigerade videon.

Här är ett exempel på en begäran:

https://api.videoindexer.ai/westeurope/Accounts/{id}/Videos/{id}/redact?priority=Low&name=testredaction&privacy=Private&streamingPreset=Default 

Du kan ange token som ett auktoriseringshuvud som har nyckelvärdetypen bearertoken:{token}, eller så kan du ange den som frågeparameter med hjälp ?token={token}av .

Du måste också lägga till en begärandetext i JSON-format med redigeringsjobbalternativen som ska tillämpas. Här är ett exempel:

{
    "faces": {
        "blurringKind": "HighBlur"
    }
}

När begäran lyckas får du svaret HTTP 202 ACCEPTED.

Övervaka jobbstatus

Som svar på begäran om jobbskapande får du ett HTTP-huvud Location som har en URL till jobbet. Du kan använda samma token för att göra en GET-begäran till den här URL:en för att se status för redigeringsjobbet.

Här är ett exempel på EN URL:

https://api.videoindexer.ai/westeurope/Accounts/<id>/Jobs/<id>

Här är ett exempel:

{
    "creationTime": "2023-05-11T11:22:57.6114155Z",
    "lastUpdateTime": "2023-05-11T11:23:01.7993563Z",
    "progress": 20,
    "jobType": "Redaction",
    "state": "Processing"
}

Om du anropar samma URL när redigeringsjobbet har slutförts får du i Location rubriken en SAS-URL (Storage Shared Access Signature) till den redigerade videon. Till exempel:

https://api.videoindexer.ai/westeurope/Accounts/<id>/Videos/<id>/SourceFile/DownloadUrl 

Den här URL:en omdirigeras till den .mp4 fil som lagras i Azure Storage-kontot.

Vanliga frågor och svar

Fråga Svar
Kan jag ladda upp en video och redigera i en åtgärd? Nej. Du måste först ladda upp och analysera en video med hjälp av Video Indexer API. Referera sedan till den indexerade videon i redigeringsjobbet.
Kan jag använda Webbplatsen för Azure AI Video Indexer för att redigera en video? Nej. För närvarande kan du bara använda API:et för att skapa ett redigeringsjobb.
Kan jag spela upp den redigerade videon med hjälp av Video Indexer-webbplatsen? Ja. Den redigerade videon visas på Video Indexer-webbplatsen precis som andra indexerade videor, men den innehåller inga insikter.
Hur gör jag för att ta bort en redigerad video? Du kan använda API:et Ta bort video och ange Videoid värdet för den redigerade videon.
Behöver jag skicka ansiktsidentifiering för att använda ansiktsredigering? Om du inte representerar en poliskår i USA, nej. Även om du är portad fortsätter vi att erbjuda ansiktsidentifiering. Vi erbjuder inte ansiktsidentifiering om du är portad. Du kan dock redigera alla ansikten i en video med hjälp av endast ansiktsigenkänning.
Kommer ansiktsredigering att skriva över min ursprungliga video? Nej. Ansiktsredigeringsjobbet skapar en ny videoutdatafil.
Alla ansikten är inte korrekt redigerade. Vad ska jag göra? Redaction förlitar sig på den första ansiktsidentifieringen och identifieringsutdata från analyspipelinen. Även om vi identifierar alla ansikten för det mesta finns det omständigheter där vi inte kan identifiera ett ansikte. Faktorer som ansiktsvinkel, antalet bildrutor som ansiktet finns och kvaliteten på källvideon påverkar kvaliteten på ansiktsredigering. Mer information finns i Ansiktsinsikter.
Kan jag redigera andra objekt än ansikten? Nej. För närvarande erbjuder vi endast ansiktsredigering. Om du behöver redigera andra objekt kan du ge feedback om vår produkt i Azure User Voice-kanalen .
Hur länge är en SAS-URL giltig för att ladda ned den redigerade videon? Om du vill ladda ned den redigerade videon efter att SAS-URL:en har upphört att gälla måste du anropa den första jobbstatus-URL:en. Det är bäst att behålla dessa Jobstatus URL:er i en databas i serverdelen för framtida referens.

Felkoder

I följande avsnitt beskrivs fel som kan uppstå när du använder ansiktsredigering.

Svar: 404 hittades inte

Kontot hittades inte eller så hittades inte videon.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
x-ms-request-id falskt sträng En globalt unik identifierare (GUID) för begäran tilldelas av servern i instrumentationssyfte. Servern ser till att alla loggar som är associerade med hanteringen av begäran kan länkas till serverbegärans-ID:t. En klient kan ange det här begärande-ID:t i ett supportärende så att supporttekniker kan hitta loggarna som är länkade till den här specifika begäran. Servern ser till att begärande-ID:t är unikt för varje jobb.

Själva svaret

Namn Obligatoriskt Typ
ErrorType falskt ErrorType
Message falskt sträng

JSON-standard

{
    "ErrorType": "GENERAL",
    "Message": "string"
}

Svar: 400 Felaktig begäran

Ogiltiga indata eller kan inte redigera videon eftersom den ursprungliga uppladdningen misslyckades. Ladda upp videon igen.

Ogiltiga indata eller kan inte redigera videon eftersom den ursprungliga uppladdningen misslyckades. Ladda upp videon igen.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
x-ms-request-id falskt sträng Ett GUID för begäran tilldelas av servern i instrumentationssyfte. Servern ser till att alla loggar som är associerade med hanteringen av begäran kan länkas till serverbegärans-ID:t. En klient kan ange det här begärande-ID:t i ett supportärende så att supporttekniker kan hitta loggarna som är länkade till den här specifika begäran. Servern ser till att begärande-ID:t är unikt för varje jobb.

Själva svaret

Namn Obligatoriskt Typ
ErrorType falskt ErrorType
Message falskt sträng

JSON-standard

{
    "ErrorType": "GENERAL",
    "Message": "string"
}

Svar: 409 Konflikt

Videon indexeras redan.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
x-ms-request-id falskt sträng Ett GUID för begäran tilldelas av servern i instrumentationssyfte. Servern ser till att alla loggar som är associerade med hanteringen av begäran kan länkas till serverbegärans-ID:t. En klient kan ange det här begärande-ID:t i ett supportärende så att supporttekniker kan hitta loggarna som är länkade till den här specifika begäran. Servern ser till att begärande-ID:t är unikt för varje jobb.

Själva svaret

Namn Obligatoriskt Typ
ErrorType falskt ErrorType
Message falskt sträng

JSON-standard

{
    "ErrorType": "GENERAL",
    "Message": "string"
}

Svar: 401 Obehörig

Åtkomsttoken har inte behörighet att komma åt kontot.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
x-ms-request-id falskt sträng Ett GUID för begäran tilldelas av servern i instrumentationssyfte. Servern ser till att alla loggar som är associerade med hanteringen av begäran kan länkas till serverbegärans-ID:t. En klient kan ange det här begärande-ID:t i ett supportärende så att supporttekniker kan hitta loggarna som är länkade till den här specifika begäran. Servern ser till att begärande-ID:t är unikt för varje jobb.

Själva svaret

Namn Obligatoriskt Typ
ErrorType falskt ErrorType
Message falskt sträng

JSON-standard

{
    "ErrorType": "USER_NOT_ALLOWED",
    "Message": "Access token is not authorized to access account 'SampleAccountId'."
}

Svar: 500 Internt serverfel

Ett fel uppstod på servern.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
x-ms-request-id falskt sträng Ett GUID för begäran tilldelas av servern i instrumentationssyfte. Servern ser till att alla loggar som är associerade med hanteringen av begäran kan länkas till serverbegärans-ID:t. En klient kan ange det här begärande-ID:t i ett supportärende så att supporttekniker kan hitta loggarna som är länkade till den här specifika begäran. Servern ser till att begärande-ID:t är unikt för varje jobb.

Själva svaret

Namn Obligatoriskt Typ
ErrorType falskt ErrorType
Message falskt sträng

JSON-standard

{
    "ErrorType": "GENERAL",
    "Message": "There was an error."
}

Svar: 429 För många begäranden

För många begäranden skickades. Använd svarshuvudet Retry-After för att bestämma när nästa begäran ska skickas.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
Retry-After falskt integer Ett icke-negativt decimaltal som anger hur många sekunder som ska fördröjas efter att svaret har tagits emot.

Svar: Tidsgräns för 504 gateway

Servern svarade inte på gatewayen inom den förväntade tiden.

Svarsrubriker

Namn Obligatoriskt Type Beskrivning
x-ms-request-id falskt sträng Ett GUID för begäran tilldelas av servern i instrumentationssyfte. Servern ser till att alla loggar som är associerade med hanteringen av begäran kan länkas till serverbegärans-ID:t. En klient kan ange det här begärande-ID:t i ett supportärende så att supporttekniker kan hitta loggarna som är länkade till den här specifika begäran. Servern ser till att begärande-ID:t är unikt för varje jobb.

JSON-standard

{
    "ErrorType": "SERVER_TIMEOUT",
    "Message": "Server did not respond to gateway within expected time"
}