Réactez les visages à l’aide de l’API Azure AI Video Indexer
Vous pouvez utiliser Azure AI Video Indexer pour détecter et identifier les visages dans la vidéo. Pour modifier votre vidéo pour flouter (refaire) des visages de personnes spécifiques, vous pouvez utiliser l’API.
Quelques minutes de séquences contenant plusieurs visages peuvent prendre des heures pour se réactérer manuellement, mais en utilisant des présélections dans l’API Video Indexer, le processus de réaction des visages nécessite quelques étapes simples.
Cet article explique comment refaire des visages à l’aide d’une API. L’API Video Indexer inclut une présélection De redaction visage qui offre une détection et uneaction évolutives des visages (flou) dans le cloud. L’article illustre chaque étape de la rédaction des visages à l’aide de l’API en détail.
La vidéo suivante montre comment refaire une vidéo à l’aide de l’API Azure AI Video Indexer.
Conformité, confidentialité et sécurité
En guise de rappel important, vous devez vous conformer à toutes les lois applicables dans votre utilisation d’analyses ou d’insights que vous dérivez à l’aide de Video Indexer.
L’accès au service Visage est limité en fonction des critères d’éligibilité et d’utilisation pour prendre en charge les principes de l’IA responsable microsoft. Le service Visage est disponible uniquement pour les clients et partenaires gérés par Microsoft. Utilisez le Formulaire d’admission de la reconnaissance faciale pour demander l’accès. Pour plus d’informations, consultez la page Accès limité visage.
Terminologie et hiérarchie de la rédaction des visages
La redaction des visages dans Video Indexer s’appuie sur la sortie des résultats existants de la détection des visages Video Indexer que nous fournissons dans nos présélections Video Standard et Advanced Analysis.
Pour réactérer une vidéo, vous devez d’abord charger une vidéo dans Video Indexer et effectuer une analyse à l’aide des présélections vidéo Standard ou Avancées . Pour ce faire, utilisez le site web ou l’API Azure AI Video Indexer. Vous pouvez ensuite utiliser l’API de rédaction des visages pour référencer cette vidéo à l’aide de la videoId
valeur. Nous créons une vidéo dans laquelle les visages indiqués sont supprimés. L’analyse vidéo et la réaction des visages sont des travaux facturables distincts. Pour plus d’informations, consultez notre page de tarification.
Types de flou
Vous pouvez choisir parmi différents types de flou dans la rédaction des visages. Pour sélectionner un type, utilisez un nom ou un numéro représentatif pour le paramètre dans le corps de la blurringKind
requête :
blurringKind number | nom blurringKind | Exemple |
---|---|---|
0 | MediumBlur | |
1 | HighBlur | |
2 | LowBlur | |
3 | BoundingBox | |
4 | Noir |
Vous pouvez spécifier le type de flou dans le corps de la requête à l’aide du blurringKind
paramètre.
Voici un exemple :
{
"faces": {
"blurringKind": "HighBlur"
}
}
Vous pouvez également utiliser un nombre qui représente le type de flou décrit dans le tableau précédent :
{
"faces": {
"blurringKind": 1
}
}
Filtres
Vous pouvez appliquer des filtres pour définir les ID de visage à flouter. Vous pouvez spécifier les ID des visages dans un tableau séparé par des virgules dans le corps du fichier JSON. Utilisez le scope
paramètre pour exclure ou inclure ces visages pour la réaction. En spécifiant des ID, vous pouvez soit réactez tous les visages , sauf les ID que vous indiquez ou réactez uniquement ces ID. Consultez des exemples dans les sections suivantes.
Exclure l’étendue
Dans l’exemple suivant, pour réacter tous les visages à l’exception des ID de visage 1001 et 1016, utilisez l’étendue Exclude
:
{
"faces": {
"blurringKind": "HighBlur",
"filter": {
"ids": [1001, 1016],
"scope": "Exclude"
}
}
}
Inclure l’étendue
Dans l’exemple suivant, pour réacter uniquement les ID de visage 1001 et 1016, utilisez l’étendue Include
:
{
"faces": {
"blurringKind": "HighBlur",
"filter": {
"ids": [1001, 1016],
"scope": "Include"
}
}
}
Réactez tous les visages
Pour réactez tous les visages, supprimez le filtre d’étendue :
{
"faces": {
"blurringKind": "HighBlur",
}
}
Pour récupérer un ID de visage, vous pouvez accéder à la vidéo indexée et récupérer le fichier d’artefact. L’artefact contient un fichier faces.json et une miniature .zip fichier contenant tous les visages détectés dans la vidéo. Vous pouvez faire correspondre le visage à l’ID et déterminer les ID de visage à refaire.
Créer un travail de rédaction
Pour créer un travail de réaction, vous pouvez appeler l’appel d’API suivant :
POST https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/redact[?name][&priority][&privacy][&externalId][&streamingPreset][&callbackUrl][&accessToken]
Les valeurs suivantes sont requises :
Nom | Valeur | Description |
---|---|---|
Accountid |
{accountId} |
ID de votre compte Video Indexer. |
Location |
{location} |
Région Azure où se trouve votre compte Video Indexer. Par exemple, westus. |
AccessToken |
{token} |
Jeton qui dispose des droits contributeur de compte générés via l’API REST Azure Resource Manager . |
Videoid |
{videoId} |
ID vidéo de la vidéo source à refaire. Vous pouvez récupérer l’ID vidéo à l’aide de l’API List Video . |
Name |
{name} |
Nom de la nouvelle vidéo régérée. |
Voici un exemple de requête :
https://api.videoindexer.ai/westeurope/Accounts/{id}/Videos/{id}/redact?priority=Low&name=testredaction&privacy=Private&streamingPreset=Default
Vous pouvez spécifier le jeton en tant qu’en-tête d’autorisation qui a un type de valeur de bearertoken:{token}
clé, ou vous pouvez le fournir en tant que paramètre de requête à l’aide ?token={token}
de .
Vous devez également ajouter un corps de requête au format JSON avec les options de tâche de rédaction à appliquer. Voici un exemple :
{
"faces": {
"blurringKind": "HighBlur"
}
}
Une fois la demande réussie, vous recevez la réponse HTTP 202 ACCEPTED
.
Suivre l’état de travail
Dans la réponse de la demande de création de travaux, vous recevez un en-tête Location
HTTP qui a une URL vers le travail. Vous pouvez utiliser le même jeton pour effectuer une requête GET à cette URL pour afficher l’état du travail de rédaction.
Voici un exemple d’URL :
https://api.videoindexer.ai/westeurope/Accounts/<id>/Jobs/<id>
Voici un exemple de réponse :
{
"creationTime": "2023-05-11T11:22:57.6114155Z",
"lastUpdateTime": "2023-05-11T11:23:01.7993563Z",
"progress": 20,
"jobType": "Redaction",
"state": "Processing"
}
Si vous appelez la même URL lorsque la tâche de rédaction est terminée, dans l’en-tête Location
, vous obtenez une URL de signature d’accès partagé (SAP) de stockage vers la vidéo régérée. Par exemple :
https://api.videoindexer.ai/westeurope/Accounts/<id>/Videos/<id>/SourceFile/DownloadUrl
Cette URL redirige vers le fichier .mp4 stocké dans le compte Stockage Azure.
FAQ
Question | Réponse |
---|---|
Puis-je charger une vidéo et me réacter en une seule opération ? | Non. Vous devez d’abord charger et analyser une vidéo à l’aide de l’API Video Indexer. Ensuite, référencez la vidéo indexée dans votre travail de rédaction. |
Puis-je utiliser le site web Azure AI Video Indexer pour refaire une vidéo ? | Non. Actuellement, vous ne pouvez utiliser que l’API pour créer un travail de réaction. |
Puis-je lire la vidéo réédictée à l’aide du site web Video Indexer ? | Oui. La vidéo mise en œuvre est visible sur le site web Video Indexer comme n’importe quelle autre vidéo indexée, mais elle ne contient pas d’insights. |
Comment faire supprimer une vidéo mise en œuvre ? | Vous pouvez utiliser l’API Delete Video et fournir la Videoid valeur de la vidéo régérée. |
Dois-je passer l’identification faciale pour utiliser la réaction faciale ? | Sauf si vous représentez un service de police dans la États-Unis, non. Même si vous êtes contrôlé, nous continuons à offrir la détection des visages. Nous n’offrons pas d’identification faciale si vous êtes contrôlé. Toutefois, vous pouvez réactez tous les visages dans une vidéo en utilisant uniquement la détection des visages. |
La réaction des visages remplacera-t-elle ma vidéo originale ? | Non. Le travail de réaction des visages crée un fichier de sortie vidéo. |
Tous les visages ne sont pas correctement régérés. Que puis-je faire ? | La réaction s’appuie sur la détection initiale des visages et la sortie de détection du pipeline d’analyse. Bien que nous détections tous les visages la plupart du temps, il existe des circonstances dans lesquelles nous ne pouvons pas détecter un visage. Les facteurs comme l’angle du visage, le nombre d’images présentes et la qualité de la vidéo source affectent la qualité de la réaction du visage. Pour plus d’informations, consultez Face Insights. |
Puis-je refaire des objets autres que des visages ? | Non. Actuellement, nous proposons uniquement la réaction des visages. Si vous avez besoin de réactualiser d’autres objets, vous pouvez fournir des commentaires sur notre produit dans le canal Azure User Voice . |
Combien de temps une URL SAP est-elle valide pour télécharger la vidéo mise en œuvre ? | Pour télécharger la vidéo mise en œuvre après l’expiration de l’URL SAP, vous devez appeler l’URL d’état du travail initiale. Il est préférable de conserver ces Jobstatus URL dans une base de données dans votre back-end pour une référence ultérieure. |
Codes d’erreur
Les sections suivantes décrivent les erreurs qui peuvent se produire lorsque vous utilisez la réaction des visages.
Réponse : 404 introuvable
Le compte n’a pas été trouvé ou la vidéo n’a pas été trouvée.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
x-ms-request-id |
false | string | Un identificateur global unique (GUID) pour la requête est attribué par le serveur à des fins d’instrumentation. Le serveur s’assure que tous les journaux associés à la gestion de la demande peuvent être liés à l’ID de demande du serveur. Un client peut fournir cet ID de demande dans un ticket de support afin que les ingénieurs du support puissent trouver les journaux liés à cette demande spécifique. Le serveur s’assure que l’ID de requête est unique pour chaque travail. |
Corps de la demande
Nom | Requise | Type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | string |
JSON par défaut
{
"ErrorType": "GENERAL",
"Message": "string"
}
Réponse : 400 Demande incorrecte
Entrée non valide ou impossible de refaire la vidéo depuis l’échec de son chargement d’origine. Chargez à nouveau la vidéo.
Entrée non valide ou impossible de refaire la vidéo, car son chargement d’origine a échoué. Chargez à nouveau la vidéo.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
x-ms-request-id |
false | string | Un GUID pour la requête est affecté par le serveur à des fins d’instrumentation. Le serveur s’assure que tous les journaux associés à la gestion de la demande peuvent être liés à l’ID de demande du serveur. Un client peut fournir cet ID de demande dans un ticket de support afin que les ingénieurs du support puissent trouver les journaux liés à cette demande spécifique. Le serveur s’assure que l’ID de requête est unique pour chaque travail. |
Corps de la demande
Nom | Requise | Type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | string |
JSON par défaut
{
"ErrorType": "GENERAL",
"Message": "string"
}
Réponse : conflit 409
La vidéo est déjà indexée.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
x-ms-request-id |
false | string | Un GUID pour la requête est affecté par le serveur à des fins d’instrumentation. Le serveur s’assure que tous les journaux associés à la gestion de la demande peuvent être liés à l’ID de demande du serveur. Un client peut fournir cet ID de demande dans un ticket de support afin que les ingénieurs du support puissent trouver les journaux liés à cette demande spécifique. Le serveur s’assure que l’ID de requête est unique pour chaque travail. |
Corps de la demande
Nom | Requise | Type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | string |
JSON par défaut
{
"ErrorType": "GENERAL",
"Message": "string"
}
Réponse : 401 Non autorisé
Le jeton d’accès n’est pas autorisé à accéder au compte.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
x-ms-request-id |
false | string | Un GUID pour la requête est affecté par le serveur à des fins d’instrumentation. Le serveur s’assure que tous les journaux associés à la gestion de la demande peuvent être liés à l’ID de demande du serveur. Un client peut fournir cet ID de demande dans un ticket de support afin que les ingénieurs du support puissent trouver les journaux liés à cette demande spécifique. Le serveur s’assure que l’ID de requête est unique pour chaque travail. |
Corps de la demande
Nom | Requise | Type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | string |
JSON par défaut
{
"ErrorType": "USER_NOT_ALLOWED",
"Message": "Access token is not authorized to access account 'SampleAccountId'."
}
Réponse : erreur du serveur interne 500
Une erreur s’est produite sur le serveur.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
x-ms-request-id |
false | string | Un GUID pour la requête est affecté par le serveur à des fins d’instrumentation. Le serveur s’assure que tous les journaux associés à la gestion de la demande peuvent être liés à l’ID de demande du serveur. Un client peut fournir cet ID de demande dans un ticket de support afin que les ingénieurs du support puissent trouver les journaux liés à cette demande spécifique. Le serveur s’assure que l’ID de requête est unique pour chaque travail. |
Corps de la demande
Nom | Requise | Type |
---|---|---|
ErrorType |
false | ErrorType |
Message |
false | string |
JSON par défaut
{
"ErrorType": "GENERAL",
"Message": "There was an error."
}
Réponse : 429 Trop de demandes
Trop de demandes ont été envoyées. Utilisez l’en-tête Retry-After
de réponse pour décider quand envoyer la requête suivante.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
Retry-After |
false | entier | Entier décimal non négatif qui indique le nombre de secondes à retarder une fois la réponse reçue. |
Réponse : délai d’expiration de la passerelle 504
Le serveur n’a pas répondu à la passerelle dans le délai prévu.
En-têtes de réponse
Nom | Requise | Type | Description |
---|---|---|---|
x-ms-request-id |
false | string | Un GUID pour la requête est affecté par le serveur à des fins d’instrumentation. Le serveur s’assure que tous les journaux associés à la gestion de la demande peuvent être liés à l’ID de demande du serveur. Un client peut fournir cet ID de demande dans un ticket de support afin que les ingénieurs du support puissent trouver les journaux liés à cette demande spécifique. Le serveur s’assure que l’ID de requête est unique pour chaque travail. |
JSON par défaut
{
"ErrorType": "SERVER_TIMEOUT",
"Message": "Server did not respond to gateway within expected time"
}