Redigir rostos usando a API do Azure AI Video Indexer

Importante

Devido ao anúncio de desativação dos Serviços de Mídia do Azure, o Azure AI Video Indexer anuncia ajustes nos recursos do Azure AI Video Indexer. Consulte Alterações relacionadas à aposentadoria do Azure Media Service (AMS) para entender o que isso significa para sua conta do Azure AI Video Indexer. Consulte o guia Preparando para a aposentadoria do AMS: VI atualização e migração.

Você pode usar o Azure AI Video Indexer para detetar e identificar rostos em vídeo. Para modificar seu vídeo para desfocar (editar) rostos de indivíduos específicos, você pode usar a API.

Alguns minutos de filmagens que contêm vários rostos podem levar horas para serem editados manualmente, mas usando predefinições na API do Video Indexer, o processo de redação de rostos requer apenas algumas etapas simples.

Este artigo mostra como redigir rostos usando uma API. A API do Video Indexer inclui uma predefinição de Face Redaction que oferece deteção de rosto escalável e edição (desfoque) na nuvem. O artigo demonstra cada etapa de como redigir rostos usando a API em detalhes.

O vídeo a seguir mostra como redigir um vídeo usando a API do Azure AI Video Indexer.

Conformidade, privacidade e segurança

Como um lembrete importante, você deve cumprir todas as leis aplicáveis ao seu uso de análises ou insights que você deriva usando o Video Indexer.

O acesso ao serviço presencial é limitado com base em critérios de elegibilidade e uso para dar suporte aos princípios de IA Responsável da Microsoft. O serviço Face está disponível apenas para clientes e parceiros geridos pela Microsoft. Use o formulário de admissão de Reconhecimento Facial para solicitar acesso. Para obter mais informações, consulte a página Acesso limitado Face.

Enfrentar a redação, terminologia e hierarquia

A redação facial no Video Indexer depende da saída dos resultados de deteção de rosto existentes do Video Indexer que fornecemos em nossas predefinições Video Standard e Advanced Analysis.

Para redigir um vídeo, você deve primeiro carregá-lo no Video Indexer e concluir uma análise usando as predefinições de vídeo padrão ou avançado . Você pode fazer isso usando o siteou a API do Azure AI Video Indexer. Em seguida, você pode usar a API de redação facial para fazer referência a este vídeo usando o videoId valor. Criamos um novo vídeo em que os rostos indicados são apagados. Tanto a análise de vídeo quanto a redação de rosto são trabalhos faturáveis separados. Para mais informações, consulte a nossa página de preços.

Tipos de desfocagem

Você pode escolher entre diferentes tipos de desfoque na redação facial. Para selecionar um tipo, use um nome ou número representativo para o blurringKind parâmetro no corpo da solicitação:

blurringKind número blurringNome do tipo Exemplo
0 Desfoque Médio Foto do desfoque médio do Azure AI Video Indexer.
1 Desfoque alto Foto do desfoque alto do Azure AI Video Indexer.
2 LowBlur Foto do Azure AI Video Indexer low blurer.
3 BoundingBox Foto das caixas delimitadoras do Azure AI Video Indexer.
4 Preto Foto do tipo de caixas pretas do Azure AI Video Indexer.

Você pode especificar o tipo de desfoque no corpo da solicitação usando o blurringKind parâmetro.

Eis um exemplo:

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

Ou use um número que represente o tipo de desfoque descrito na tabela anterior:

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

Filtros

Você pode aplicar filtros para definir quais IDs de rosto desfocar. Você pode especificar as IDs das faces em uma matriz separada por vírgulas no corpo do arquivo JSON. Use o scope parâmetro para excluir ou incluir essas faces para redação. Ao especificar IDs, você pode editar todas as faces , exceto as IDs indicadas, ou redigir apenas essas IDs. Veja exemplos nas próximas seções.

Excluir âmbito

No exemplo a seguir, para redigir todas as faces, exceto as IDs de face 1001 e 1016, use o Exclude escopo:

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

Incluir âmbito

No exemplo a seguir, para redigir apenas as IDs de rosto 1001 e 1016, use o Include escopo:

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

Redigir todos os rostos

Para redigir todas as faces, remova o filtro de escopo:

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

Para recuperar um ID facial, você pode ir para o vídeo indexado e recuperar o arquivo de artefato. O artefato contém um arquivo de faces.json e uma miniatura .zip arquivo que tem todas as faces que foram detetadas no vídeo. Pode fazer corresponder o rosto ao ID e decidir quais os IDs faciais a eliminar.

Criar um trabalho de redação

Para criar um trabalho de redação, você pode invocar a seguinte chamada de API:

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

Os seguintes valores são necessários:

Nome valor Description
Accountid {accountId} O ID da sua conta do Video Indexer.
Location {location} A região do Azure onde sua conta do Video Indexer está localizada. Por exemplo, westus.
AccessToken {token} O token que tem direitos de Colaborador de Conta gerados por meio da API REST do Azure Resource Manager .
Videoid {videoId} O ID do vídeo de origem a ser redigido. Você pode recuperar a ID do vídeo usando a API de vídeo de lista.
Name {name} O nome do novo vídeo editado.

Eis um exemplo de um pedido:

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

Você pode especificar o token como um cabeçalho de autorização que tenha um tipo de valor de chave de , ou pode fornecê-lo como parâmetro de bearertoken:{token}consulta usando ?token={token}.

Você também precisa adicionar um corpo de solicitação no formato JSON com as opções de trabalho de redação para aplicar. Eis um exemplo:

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

Quando a solicitação for bem-sucedida, você receberá a resposta HTTP 202 ACCEPTED.

Monitorar o status do trabalho

Na resposta da solicitação de criação de trabalho, você recebe um cabeçalho Location HTTP que tem uma URL para o trabalho. Você pode usar o mesmo token para fazer uma solicitação GET para essa URL para ver o status do trabalho de redação.

Aqui está um exemplo de URL:

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

Eis uma resposta de exemplo:

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

Se você chamar a mesma URL quando o trabalho de redação for concluído, no Location cabeçalho, obterá uma URL de assinatura de acesso compartilhado (SAS) de armazenamento para o vídeo editado. Por exemplo:

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

Essa URL redireciona para o arquivo de .mp4 armazenado na conta de Armazenamento do Azure.

FAQs

Pergunta Resposta
Posso carregar um vídeo e redigir numa única operação? N.º Você precisa primeiro carregar e analisar um vídeo usando a API do Video Indexer. Em seguida, faça referência ao vídeo indexado em seu trabalho de redação.
Posso usar o site do Azure AI Video Indexer para redigir um vídeo? N.º Atualmente, você pode usar apenas a API para criar um trabalho de redação.
Posso reproduzir o vídeo editado usando o site do Video Indexer? Sim. O vídeo editado é visível no site do Video Indexer como qualquer outro vídeo indexado, mas não contém informações.
Como faço para excluir um vídeo editado? Você pode usar a API Excluir vídeo e fornecer o Videoid valor para o vídeo editado.
Preciso passar pelo limite de identificação facial para usar a redação facial? A menos que você represente um departamento de polícia nos Estados Unidos, não. Mesmo que você esteja fechado, continuamos a oferecer deteção de rosto. Não oferecemos identificação facial se você estiver bloqueado. No entanto, você pode redigir todos os rostos em um vídeo usando apenas a deteção de rosto.
A redação substituirá meu vídeo original? N.º O trabalho de redação de rosto cria um novo arquivo de saída de vídeo.
Nem todos os rostos estão devidamente redigidos. O que posso fazer? A redação depende da deteção inicial de rosto e da saída de rastreamento do pipeline de análise. Embora detetemos todos os rostos na maioria das vezes, há circunstâncias em que não conseguimos detetar um rosto. Fatores como o ângulo do rosto, o número de quadros que o rosto está presente e a qualidade do vídeo de origem afetam a qualidade da redação do rosto. Para obter mais informações, consulte Informações faciais.
Posso redigir objetos que não sejam rostos? N.º Atualmente, oferecemos apenas redação facial. Se você precisar redigir outros objetos, poderá fornecer comentários sobre nosso produto no canal Azure User Voice .
Por quanto tempo um URL SAS é válido para baixar o vídeo editado? Para baixar o vídeo editado depois que o URL SAS expirou, você precisa chamar o URL de status inicial do trabalho. É melhor manter esses Jobstatus URLs em um banco de dados em seu back-end para referência futura.

Códigos de erro

As seções a seguir descrevem erros que podem ocorrer quando você usa a redação facial.

Resposta: 404 Não encontrado

A conta não foi encontrada ou o vídeo não foi encontrado.

Cabeçalhos de resposta

Nome Obrigatório Type Description
x-ms-request-id false string Um identificador global exclusivo (GUID) para a solicitação é atribuído pelo servidor para fins de instrumentação. O servidor certifica-se de que todos os logs associados ao tratamento da solicitação possam ser vinculados à ID de solicitação do servidor. Um cliente pode fornecer esse ID de solicitação em um tíquete de suporte para que os engenheiros de suporte possam encontrar os logs vinculados a essa solicitação específica. O servidor certifica-se de que o ID da solicitação é exclusivo para cada trabalho.

Corpo da resposta

Nome Obrigatório Type
ErrorType false ErrorType
Message false string

JSON padrão

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

Resposta: 400 Bad Request

Entrada inválida ou não é possível editar o vídeo desde que o upload original falhou. Por favor, carregue o vídeo novamente.

Entrada inválida ou não é possível redigir o vídeo porque o carregamento original falhou. Carregue o vídeo novamente.

Cabeçalhos de resposta

Nome Obrigatório Type Description
x-ms-request-id false string Um GUID para a solicitação é atribuído pelo servidor para fins de instrumentação. O servidor certifica-se de que todos os logs associados ao tratamento da solicitação possam ser vinculados à ID de solicitação do servidor. Um cliente pode fornecer esse ID de solicitação em um tíquete de suporte para que os engenheiros de suporte possam encontrar os logs vinculados a essa solicitação específica. O servidor certifica-se de que o ID da solicitação é exclusivo para cada trabalho.

Corpo da resposta

Nome Obrigatório Type
ErrorType false ErrorType
Message false string

JSON padrão

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

Resposta: 409 Conflito

O vídeo já está sendo indexado.

Cabeçalhos de resposta

Nome Obrigatório Type Description
x-ms-request-id false string Um GUID para a solicitação é atribuído pelo servidor para fins de instrumentação. O servidor certifica-se de que todos os logs associados ao tratamento da solicitação possam ser vinculados à ID de solicitação do servidor. Um cliente pode fornecer esse ID de solicitação em um tíquete de suporte para que os engenheiros de suporte possam encontrar os logs vinculados a essa solicitação específica. O servidor certifica-se de que o ID da solicitação é exclusivo para cada trabalho.

Corpo da resposta

Nome Obrigatório Type
ErrorType false ErrorType
Message false string

JSON padrão

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

Resposta: 401 Não autorizado

O token de acesso não está autorizado a acessar a conta.

Cabeçalhos de resposta

Nome Obrigatório Type Description
x-ms-request-id false string Um GUID para a solicitação é atribuído pelo servidor para fins de instrumentação. O servidor certifica-se de que todos os logs associados ao tratamento da solicitação possam ser vinculados à ID de solicitação do servidor. Um cliente pode fornecer esse ID de solicitação em um tíquete de suporte para que os engenheiros de suporte possam encontrar os logs vinculados a essa solicitação específica. O servidor certifica-se de que o ID da solicitação é exclusivo para cada trabalho.

Corpo da resposta

Nome Obrigatório Type
ErrorType false ErrorType
Message false string

JSON padrão

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

Resposta: 500 Erro interno do servidor

Ocorreu um erro no servidor.

Cabeçalhos de resposta

Nome Obrigatório Type Description
x-ms-request-id false string Um GUID para a solicitação é atribuído pelo servidor para fins de instrumentação. O servidor certifica-se de que todos os logs associados ao tratamento da solicitação possam ser vinculados à ID de solicitação do servidor. Um cliente pode fornecer esse ID de solicitação em um tíquete de suporte para que os engenheiros de suporte possam encontrar os logs vinculados a essa solicitação específica. O servidor certifica-se de que o ID da solicitação é exclusivo para cada trabalho.

Corpo da resposta

Nome Obrigatório Type
ErrorType false ErrorType
Message false string

JSON padrão

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

Resposta: 429 Demasiados pedidos

Foram enviados demasiados pedidos. Use o cabeçalho de Retry-After resposta para decidir quando enviar a próxima solicitação.

Cabeçalhos de resposta

Nome Obrigatório Type Description
Retry-After false integer Um inteiro decimal não negativo que indica o número de segundos a atrasar após a resposta ser recebida.

Resposta: 504 Gateway Timeout

O servidor não respondeu ao gateway dentro do tempo esperado.

Cabeçalhos de resposta

Nome Obrigatório Type Description
x-ms-request-id false string Um GUID para a solicitação é atribuído pelo servidor para fins de instrumentação. O servidor certifica-se de que todos os logs associados ao tratamento da solicitação possam ser vinculados à ID de solicitação do servidor. Um cliente pode fornecer esse ID de solicitação em um tíquete de suporte para que os engenheiros de suporte possam encontrar os logs vinculados a essa solicitação específica. O servidor certifica-se de que o ID da solicitação é exclusivo para cada trabalho.

JSON padrão

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