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 | ![]() |
1 | HighBlur | ![]() |
2 | LowBlur | ![]() |
3 | Avgränsningsruta | ![]() |
4 | Svart | ![]() |
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"
}