Udostępnij za pośrednictwem


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 Zdjęcie średniej rozmycia usługi Azure AI Video Indexer.
1 HighBlur Zdjęcie usługi Azure AI Video Indexer o wysokim rozmyciu.
2 LowBlur Zdjęcie usługi Azure AI Video Indexer o niskim rozmyciu.
3 Pole ograniczenia Zdjęcie pól ograniczenia usługi Azure AI Video Indexer.
100 Black Zdjęcie rodzaju czarnych pól usługi Azure AI Video Indexer.

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"
}