Redact faces by using Azure AI Video Indexer API
Usługa Azure AI Video Indexer umożliwia wykrywanie i identyfikowanie twarzy w filmie wideo. Aby zmodyfikować wideo w celu rozmycia (redact) twarzy określonych osób, możesz użyć interfejsu API.
Kilka minut materiału zawierającego wiele twarzy może potrwać kilka godzin, ale użycie ustawień wstępnych w interfejsie API usługi Video Indexer wymaga wykonania kilku prostych kroków.
W tym artykule pokazano, jak redagować twarze przy użyciu interfejsu API. Interfejs API usługi Video Indexer zawiera ustawienie wstępne redaction rozpoznawania twarzy, które oferuje skalowalne wykrywanie twarzy i redaction (rozmycie) w chmurze. W tym artykule przedstawiono każdy krok, w jaki sposób zredagować twarze przy użyciu szczegółowego interfejsu API.
W poniższym wideo pokazano, jak zredagować wideo przy użyciu interfejsu API usługi Azure AI Video Indexer.
Zgodność, prywatność i zabezpieczenia
Ważne przypomnienie powinno być zgodne ze wszystkimi obowiązującymi prawami w korzystaniu z analiz lub szczegółowych informacji uzyskiwanych za pomocą usługi Video Indexer.
Dostęp do usługi rozpoznawania twarzy jest ograniczony na podstawie kryteriów kwalifikowalności i użycia do obsługi zasad odpowiedzialnej sztucznej inteligencji firmy Microsoft. Usługa rozpoznawania twarzy jest dostępna tylko dla klientów i partnerów zarządzanych przez firmę Microsoft. Użyj formularza do wprowadzania rozpoznawania twarzy, aby ubiegać się o dostęp. Aby uzyskać więcej informacji, zobacz stronę Dostęp ograniczony do twarzy.
Terminologia i hierarchia rozpoznawania twarzy
Funkcja redakcji twarzy w usłudze Video Indexer opiera się na danych wyjściowych istniejących wyników wykrywania twarzy usługi Video Indexer, które udostępniamy w ustawieniach wstępnych video Standard i Advanced Analysis.
Aby zredagować wideo, musisz najpierw przekazać film wideo do usługi Video Indexer i ukończyć analizę przy użyciu standardowych lub zaawansowanych ustawień wstępnych wideo. Można to zrobić przy użyciu witryny internetowej lub interfejsu API usługi Azure AI Video Indexer. Następnie możesz użyć interfejsu API redaction twarzy do odwoływania się do tego wideo przy użyciu videoId
wartości . Tworzymy nowy film wideo, w którym wyświetlane twarze są redacted. Zarówno analiza wideo, jak i redakcja twarzy są oddzielnymi zadaniami rozliczanymi. Aby uzyskać więcej informacji, zobacz naszą stronę cennika.
Typy rozmycia
Możesz wybrać spośród różnych typów rozmycia twarzy. Aby wybrać typ, użyj nazwy lub numeru przedstawiciela dla parametru blurringKind
w treści żądania:
liczba rozmyciaKind | rozmycieNazwakind | Przykład |
---|---|---|
0 | MediumBlur | |
1 | HighBlur | |
2 | LowBlur | |
3 | Pole ograniczenia | |
100 | Black |
Za pomocą parametru blurringKind
można określić rodzaj rozmycia w treści żądania.
Oto przykład:
{
"faces": {
"blurringKind": "HighBlur"
}
}
Możesz też użyć liczby reprezentującej typ rozmycia opisanego w poprzedniej tabeli:
{
"faces": {
"blurringKind": 1
}
}
Filtry
Filtry można zastosować, aby ustawić identyfikatory twarzy do rozmycia. Identyfikatory twarzy można określić w tablicy rozdzielanej przecinkami w treści pliku JSON. Użyj parametru scope
, aby wykluczyć lub dołączyć te twarze do redaction. Określając identyfikatory, można zredagować wszystkie twarze z wyjątkiem identyfikatorów wskazujących lub redagujących tylko te identyfikatory. Zobacz przykłady w następnych sekcjach.
Wyklucz zakres
W poniższym przykładzie, aby zredagować wszystkie twarze z wyjątkiem identyfikatorów twarzy 1001 i 1016, użyj Exclude
zakresu:
{
"faces": {
"blurringKind": "HighBlur",
"filter": {
"ids": [1001, 1016],
"scope": "Exclude"
}
}
}
Uwzględnij zakres
W poniższym przykładzie, aby zredagować tylko identyfikatory twarzy 1001 i 1016, użyj Include
zakresu:
{
"faces": {
"blurringKind": "HighBlur",
"filter": {
"ids": [1001, 1016],
"scope": "Include"
}
}
}
Wykonaj ponownie wszystkie twarze
Aby zredagować wszystkie twarze, usuń filtr zakresu:
{
"faces": {
"blurringKind": "HighBlur",
}
}
Aby pobrać identyfikator twarzy, możesz przejść do indeksowanego pliku wideo i pobrać plik artefaktu. Artefakt zawiera plik faces.json i plik miniatury .zip zawierający wszystkie twarze wykryte w filmie wideo. Możesz dopasować twarz do identyfikatora i zdecydować, które identyfikatory twarzy mają być redagowane.
Tworzenie zadania redaction
Aby utworzyć zadanie redaction, możesz wywołać następujące wywołanie interfejsu API:
POST https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/redact[?name][&priority][&privacy][&externalId][&streamingPreset][&callbackUrl][&accessToken]
Wymagane są następujące wartości:
Nazwa/nazwisko | Wartość | Opis |
---|---|---|
Accountid |
{accountId} |
Identyfikator konta usługi Video Indexer. |
Location |
{location} |
Region świadczenia usługi Azure, w którym znajduje się konto usługi Video Indexer. Na przykład westus. |
AccessToken |
{token} |
Token, który ma prawa współautora konta wygenerowane za pośrednictwem interfejsu API REST usługi Azure Resource Manager . |
Videoid |
{videoId} |
Identyfikator wideo źródłowego wideo do zredagowania. Identyfikator wideo można pobrać przy użyciu interfejsu API wideo listy. |
Name |
{name} |
Nazwa nowego, zredagowanego wideo. |
Oto przykład żądania:
https://api.videoindexer.ai/westeurope/Accounts/{id}/Videos/{id}/redact?priority=Low&name=testredaction&privacy=Private&streamingPreset=Default
Token można określić jako nagłówek autoryzacji, który ma typ bearertoken:{token}
wartości klucza , lub możesz podać go jako parametr zapytania przy użyciu polecenia ?token={token}
.
Musisz również dodać treść żądania w formacie JSON z opcjami zadania ponownego stosowania. Oto przykład:
{
"faces": {
"blurringKind": "HighBlur"
}
}
Gdy żądanie zakończy się pomyślnie, otrzymasz odpowiedź HTTP 202 ACCEPTED
.
Monitorowanie stanu zadania
W odpowiedzi na żądanie utworzenia zadania otrzymasz nagłówek Location
HTTP zawierający adres URL zadania. Możesz użyć tego samego tokenu, aby wysłać żądanie GET do tego adresu URL, aby wyświetlić stan zadania redaction.
Oto przykładowy adres URL:
https://api.videoindexer.ai/westeurope/Accounts/<id>/Jobs/<id>
Oto przykładowa odpowiedź:
{
"creationTime": "2023-05-11T11:22:57.6114155Z",
"lastUpdateTime": "2023-05-11T11:23:01.7993563Z",
"progress": 20,
"jobType": "Redaction",
"state": "Processing"
}
Jeśli wywołasz ten sam adres URL po zakończeniu zadania redaction, w nagłówku Location
otrzymasz adres URL sygnatury dostępu współdzielonego magazynu do zredagowanego klipu wideo. Na przykład:
https://api.videoindexer.ai/westeurope/Accounts/<id>/Videos/<id>/SourceFile/DownloadUrl
Ten adres URL przekierowuje do pliku .mp4 przechowywanego na koncie usługi Azure Storage.
Często zadawane pytania
Pytanie | Odpowiedź |
---|---|
Czy mogę przekazać film wideo i przeprowadzić operację redact w jednej operacji? | L.p. Musisz najpierw przekazać i przeanalizować wideo przy użyciu interfejsu API usługi Video Indexer. Następnie odwołuj się do indeksowanego klipu wideo w zadaniu redakcji. |
Czy mogę użyć witryny internetowej usługi Azure AI Video Indexer, aby zredagować film wideo? | L.p. Obecnie można użyć tylko interfejsu API do utworzenia zadania redaction. |
Czy mogę odtworzyć zredagowane wideo przy użyciu witryny internetowej usługi Video Indexer? | Tak. Zredagowany film wideo jest widoczny w witrynie internetowej usługi Video Indexer, podobnie jak w przypadku każdego innego indeksowanego wideo, ale nie zawiera żadnych szczegółowych informacji. |
Jak mogę usunąć zredagowany klip wideo? | Możesz użyć interfejsu API usuwania wideo i podać Videoid wartość zredagowanego klipu wideo. |
Czy muszę przekazać rozpoznawanie twarzy, aby użyć funkcji redakcji twarzy? | Chyba że reprezentujesz policję w Stany Zjednoczone, nie. Nawet jeśli masz bramę, nadal oferujemy wykrywanie twarzy. Nie oferujemy identyfikacji twarzy, jeśli jesteś strażnikiem. Można jednak zredagować wszystkie twarze w filmie wideo, używając tylko wykrywania twarzy. |
Czy przeredagowanie twarzy zastąpi moje oryginalne wideo? | L.p. Zadanie redaction twarzy tworzy nowy plik wyjściowy wideo. |
Nie wszystkie twarze są prawidłowo zredagowane. Co mogę zrobić? | Redaction opiera się na początkowym wykrywaniu twarzy i wykrywaniu danych wyjściowych potoku analizy. Mimo że w większości przypadków wykrywamy wszystkie twarze, istnieją okoliczności, w których nie możemy wykryć twarzy. Czynniki takie jak kąt twarzy, liczba ramek twarzy, a jakość źródłowego filmu wideo wpływa na jakość redakcji twarzy. Aby uzyskać więcej informacji, zobacz Szczegółowe informacje o twarzy. |
Czy mogę redagować obiekty inne niż twarze? | L.p. Obecnie oferujemy tylko redakcję twarzy. Jeśli potrzebujesz zredagować inne obiekty, możesz przekazać opinię na temat naszego produktu w kanale Azure User Voice . |
Jak długo adres URL sygnatury dostępu współdzielonego jest prawidłowy do pobrania zredagowanego klipu wideo? | Aby pobrać zredagowany film wideo po wygaśnięciu adresu URL sygnatury dostępu współdzielonego, musisz wywołać początkowy adres URL stanu zadania. Najlepiej zachować te Jobstatus adresy URL w bazie danych w zapleczu na potrzeby przyszłych odwołań. |
Kody błędów
W poniższych sekcjach opisano błędy, które mogą wystąpić podczas używania funkcji redakcji twarzy.
Odpowiedź: 404 Nie znaleziono
Nie znaleziono konta lub nie znaleziono wideo.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
x-ms-request-id |
fałsz | string | Serwer do celów instrumentacji przypisuje globalnie unikatowy identyfikator (GUID) dla żądania. Serwer zapewnia, że wszystkie dzienniki skojarzone z obsługą żądania mogą być połączone z identyfikatorem żądania serwera. Klient może podać ten identyfikator żądania w bilecie pomocy technicznej, aby inżynierowie pomocy technicznej mogli znaleźć dzienniki połączone z tym konkretnym żądaniem. Serwer zapewnia, że identyfikator żądania jest unikatowy dla każdego zadania. |
Treść odpowiedzi
Nazwisko | Wymagania | Typ |
---|---|---|
ErrorType |
fałsz | ErrorType |
Message |
fałsz | string |
Domyślny kod JSON
{
"ErrorType": "GENERAL",
"Message": "string"
}
Odpowiedź: 400 Nieprawidłowe żądanie
Nieprawidłowe dane wejściowe lub nie można zredagować wideo, ponieważ jego oryginalne przekazywanie nie powiodło się. Przekaż ponownie film wideo.
Nieprawidłowe dane wejściowe lub nie można zredagować wideo, ponieważ jego oryginalne przekazywanie nie powiodło się. Przekaż ponownie wideo.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
x-ms-request-id |
fałsz | string | Identyfikator GUID żądania jest przypisywany przez serwer do celów instrumentacji. Serwer zapewnia, że wszystkie dzienniki skojarzone z obsługą żądania mogą być połączone z identyfikatorem żądania serwera. Klient może podać ten identyfikator żądania w bilecie pomocy technicznej, aby inżynierowie pomocy technicznej mogli znaleźć dzienniki połączone z tym konkretnym żądaniem. Serwer zapewnia, że identyfikator żądania jest unikatowy dla każdego zadania. |
Treść odpowiedzi
Nazwisko | Wymagania | Typ |
---|---|---|
ErrorType |
fałsz | ErrorType |
Message |
fałsz | string |
Domyślny kod JSON
{
"ErrorType": "GENERAL",
"Message": "string"
}
Odpowiedź: 409 Konflikt
Film wideo jest już indeksowany.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
x-ms-request-id |
fałsz | string | Identyfikator GUID żądania jest przypisywany przez serwer do celów instrumentacji. Serwer zapewnia, że wszystkie dzienniki skojarzone z obsługą żądania mogą być połączone z identyfikatorem żądania serwera. Klient może podać ten identyfikator żądania w bilecie pomocy technicznej, aby inżynierowie pomocy technicznej mogli znaleźć dzienniki połączone z tym konkretnym żądaniem. Serwer zapewnia, że identyfikator żądania jest unikatowy dla każdego zadania. |
Treść odpowiedzi
Nazwisko | Wymagania | Typ |
---|---|---|
ErrorType |
fałsz | ErrorType |
Message |
fałsz | string |
Domyślny kod JSON
{
"ErrorType": "GENERAL",
"Message": "string"
}
Odpowiedź: 401 Brak autoryzacji
Token dostępu nie jest autoryzowany do uzyskiwania dostępu do konta.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
x-ms-request-id |
fałsz | string | Identyfikator GUID żądania jest przypisywany przez serwer do celów instrumentacji. Serwer zapewnia, że wszystkie dzienniki skojarzone z obsługą żądania mogą być połączone z identyfikatorem żądania serwera. Klient może podać ten identyfikator żądania w bilecie pomocy technicznej, aby inżynierowie pomocy technicznej mogli znaleźć dzienniki połączone z tym konkretnym żądaniem. Serwer zapewnia, że identyfikator żądania jest unikatowy dla każdego zadania. |
Treść odpowiedzi
Nazwisko | Wymagania | Typ |
---|---|---|
ErrorType |
fałsz | ErrorType |
Message |
fałsz | string |
Domyślny kod JSON
{
"ErrorType": "USER_NOT_ALLOWED",
"Message": "Access token is not authorized to access account 'SampleAccountId'."
}
Odpowiedź: 500 Wewnętrzny błąd serwera
Wystąpił błąd na serwerze.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
x-ms-request-id |
fałsz | string | Identyfikator GUID żądania jest przypisywany przez serwer do celów instrumentacji. Serwer zapewnia, że wszystkie dzienniki skojarzone z obsługą żądania mogą być połączone z identyfikatorem żądania serwera. Klient może podać ten identyfikator żądania w bilecie pomocy technicznej, aby inżynierowie pomocy technicznej mogli znaleźć dzienniki połączone z tym konkretnym żądaniem. Serwer zapewnia, że identyfikator żądania jest unikatowy dla każdego zadania. |
Treść odpowiedzi
Nazwisko | Wymagania | Typ |
---|---|---|
ErrorType |
fałsz | ErrorType |
Message |
fałsz | string |
Domyślny kod JSON
{
"ErrorType": "GENERAL",
"Message": "There was an error."
}
Odpowiedź: 429 Zbyt wiele żądań
Wysłano zbyt wiele żądań. Użyj nagłówka Retry-After
odpowiedzi, aby zdecydować, kiedy wysłać następne żądanie.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
Retry-After |
fałsz | integer | Liczba całkowita nieujemna dziesiętna wskazująca liczbę sekund opóźnienia po odebraniu odpowiedzi. |
Odpowiedź: Limit czasu bramy 504
Serwer nie odpowiedział na bramę w oczekiwanym czasie.
Nagłówki odpowiedzi
Nazwisko | Wymagania | Type | Opis |
---|---|---|---|
x-ms-request-id |
fałsz | string | Identyfikator GUID żądania jest przypisywany przez serwer do celów instrumentacji. Serwer zapewnia, że wszystkie dzienniki skojarzone z obsługą żądania mogą być połączone z identyfikatorem żądania serwera. Klient może podać ten identyfikator żądania w bilecie pomocy technicznej, aby inżynierowie pomocy technicznej mogli znaleźć dzienniki połączone z tym konkretnym żądaniem. Serwer zapewnia, że identyfikator żądania jest unikatowy dla każdego zadania. |
Domyślny kod JSON
{
"ErrorType": "SERVER_TIMEOUT",
"Message": "Server did not respond to gateway within expected time"
}