Effectuer une récupération vidéo en utilisant la vectorisation (version 4.0 preview)
Les API de récupération vidéo d’Azure AI font partie d’Azure AI Vision. Elles permettent aux développeurs de créer un index, d’y ajouter des documents (vidéos et images) et de faire des recherches en langage naturel. Les développeurs peuvent définir des schémas de métadonnées pour chaque index et ingérer des métadonnées dans le service pour faciliter la récupération. Les développeurs peuvent également spécifier les caractéristiques à extraire de l’index (vision, speech) et filtrer leur recherche en fonction des caractéristiques.
Prérequis
- Abonnement Azure : créez-en un gratuitement.
- Une fois que vous avez votre abonnement Azure, créez une ressource Vision en utilisant le portail. Pour cette préversion, vous devez créer votre ressource dans l’une des régions suivantes : Australie Est, Suisse Nord, Suède Centre ou USA Est.
- Une ressource de stockage Azure – en créer une
Critères des entrées
Formats pris en charge
Format de fichier | Description |
---|---|
asf |
ASF (Advanced / Active Streaming Format) |
avi |
AVI (Audio-Video Interleaved) |
flv |
FLV (Flash Video) |
matroskamm , webm |
Matroska / WebM |
mov ,mp4 ,m4a ,3gp ,3g2 ,mj2 |
QuickTime / MOV |
Codecs vidéo pris en charge
Codec | Format |
---|---|
h264 |
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 |
h265 |
H.265/HEVC |
libvpx-vp9 |
libvpx VP9 (codec vp9) |
mpeg4 |
MPEG-4 Part 2 |
Codecs audio pris en charge
Codec | Format |
---|---|
aac |
AAC (Advanced Audio Coding) |
mp3 |
MP3 (MPEG-3 Audio Layer 3) |
pcm |
PCM (non compressé) |
vorbis |
Vorbis |
wmav2 |
Windows Media Audio 2 |
Appeler les API de récupération vidéo
Pour utiliser les API de récupération vidéo dans un modèle classique, effectuez les étapes suivantes :
- Créez un index en utilisant PUT - Create an index.
- Ajoutez des documents vidéo à l’index en utilisant PUT - CreateIngestion.
- Attendez que l’ingestion se termine, en vérifiant avec GET - ListIngestions.
- Recherchez un mot clé ou une expression en utilisant POST - SearchByText.
Utiliser les API de récupération vidéo pour la recherche basée sur des métadonnées
Les API de récupération vidéo permettent à un utilisateur d’ajouter des métadonnées aux fichiers vidéo. Les métadonnées sont des informations supplémentaires associées aux fichiers vidéo comme « ID de l’appareil photo », « Horodatage » ou « Localisation » qui peuvent servir à organiser, filtrer et rechercher des vidéos spécifiques. Cet exemple montre comment créer un index, ajouter des fichiers vidéo avec des métadonnées associées et effectuer des recherches en utilisant différentes caractéristiques.
Étape 1 : Créer un index
Pour commencer, vous devez créer un index afin de stocker et organiser les fichiers vidéo et leurs métadonnées. L’exemple ci-dessous montre comment créer un index nommé « my-video-index » à l’aide de l’API Créer un index.
curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
'metadataSchema': {
'fields': [
{
'name': 'cameraId',
'searchable': false,
'filterable': true,
'type': 'string'
},
{
'name': 'timestamp',
'searchable': false,
'filterable': true,
'type': 'datetime'
}
]
},
'features': [
{
'name': 'vision',
'domain': 'surveillance'
},
{
'name': 'speech'
}
]
}"
Réponse :
HTTP/1.1 201 Created
Content-Length: 530
Content-Type: application/json; charset=utf-8
request-id: cb036529-d1cf-4b44-a1ef-0a4e9fc62885
api-supported-versions: 2023-01-15-preview,2023-05-01-preview
x-envoy-upstream-service-time: 202
Date: Thu, 06 Jul 2023 18:05:05 GMT
Connection: close
{
"name": "my-video-index",
"metadataSchema": {
"language": "en",
"fields": [
{
"name": "cameraid",
"searchable": false,
"filterable": true,
"type": "string"
},
{
"name": "timestamp",
"searchable": false,
"filterable": true,
"type": "datetime"
}
]
},
"userData": {},
"features": [
{
"name": "vision",
"modelVersion": "2023-05-31",
"domain": "surveillance"
},
{
"name": "speech",
"modelVersion": "2023-06-30",
"domain": "generic"
}
],
"eTag": "\"7966244a79384cca9880d67a4daa9eb1\"",
"createdDateTime": "2023-07-06T18:05:06.7582534Z",
"lastModifiedDateTime": "2023-07-06T18:05:06.7582534Z"
}
Étape 2 : Ajouter des fichiers vidéo à l’index
Ensuite, vous pouvez ajouter des fichiers vidéo à l’index avec leurs métadonnées associées. L’exemple ci-dessous montre comment ajouter deux fichiers vidéo à l’index en utilisant des URL SAS avec l’API Créer une ingestion.
curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions/my-ingestion?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
'videos': [
{
'mode': 'add',
'documentId': '02a504c9cd28296a8b74394ed7488045',
'documentUrl': 'https://example.blob.core.windows.net/videos/02a504c9cd28296a8b74394ed7488045.mp4?sas_token_here',
'metadata': {
'cameraId': 'camera1',
'timestamp': '2023-06-30 17:40:33'
}
},
{
'mode': 'add',
'documentId': '043ad56daad86cdaa6e493aa11ebdab3',
'documentUrl': '[https://example.blob.core.windows.net/videos/043ad56daad86cdaa6e493aa11ebdab3.mp4?sas_token_here',
'metadata': {
'cameraId': 'camera2'
}
}
]
}"
Réponse :
HTTP/1.1 202 Accepted
Content-Length: 152
Content-Type: application/json; charset=utf-8
request-id: ee5e48df-13f8-4a87-a337-026947144321
operation-location: http://api.example.com.trafficmanager.net/retrieval/indexes/my-test-index/ingestions/my-ingestion
api-supported-versions: 2023-01-15-preview,2023-05-01-preview
x-envoy-upstream-service-time: 709
Date: Thu, 06 Jul 2023 18:15:34 GMT
Connection: close
{
"name": "my-ingestion",
"state": "Running",
"createdDateTime": "2023-07-06T18:15:33.8105687Z",
"lastModifiedDateTime": "2023-07-06T18:15:34.3418564Z"
}
Étape 3 : Attendre la fin de l’ingestion
Une fois que vous avez ajouté des fichiers vidéo à l’index, le processus d’ingestion démarre. Cela peut prendre un certain temps selon la taille et le nombre de fichiers. Pour vérifier que l’ingestion est terminée avant d’effectuer des recherches, vous pouvez utiliser l’API Obtenir une ingestion pour vérifier l’état. Attendez que cet appel renvoie "state" = "Completed"
avant de passer à l’étape suivante.
curl.exe -v -X GET "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions?api-version=2023-05-01-preview&$top=20" -H "ocp-apim-subscription-key: <YOUR_SUBSCRIPTION_KEY>"
Réponse :
HTTP/1.1 200 OK
Content-Length: 164
Content-Type: application/json; charset=utf-8
request-id: 4907feaf-88f1-4009-a1a5-ad366f04ee31
api-supported-versions: 2023-01-15-preview,2023-05-01-preview
x-envoy-upstream-service-time: 12
Date: Thu, 06 Jul 2023 18:17:47 GMT
Connection: close
{
"value": [
{
"name": "my-ingestion",
"state": "Completed",
"createdDateTime": "2023-07-06T18:15:33.8105687Z",
"lastModifiedDateTime": "2023-07-06T18:15:34.3418564Z"
}
]
}
Étape 4 : Effectuer des recherches avec des métadonnées
Après avoir ajouté des fichiers vidéo à l’index, vous pouvez rechercher des vidéos spécifiques en utilisant les métadonnées. Cet exemple montre deux types de recherches : une avec la caractéristique « vision » et l’autre avec la caractéristique « speech ».
Rechercher avec la caractéristique « vision »
Pour effectuer une recherche à l’aide de la fonctionnalité « vision », utilisez l’API Rechercher par texte avec le filtre vision
, en spécifiant le texte de la requête et tout autre filtre souhaité.
curl.exe -v -X POST "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index:queryByText?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
'queryText': 'a man with black hoodie',
'filters': {
'stringFilters': [
{
'fieldName': 'cameraId',
'values': [
'camera1'
]
}
],
'featureFilters': ['vision']
}
}"
Réponse :
HTTP/1.1 200 OK
Content-Length: 3289
Content-Type: application/json; charset=utf-8
request-id: 4c2477df-d89d-4a98-b433-611083324a3f
api-supported-versions: 2023-05-01-preview
x-envoy-upstream-service-time: 233
Date: Thu, 06 Jul 2023 18:42:08 GMT
Connection: close
{
"value": [
{
"documentId": "02a504c9cd28296a8b74394ed7488045",
"documentKind": "VideoFrame",
"start": "00:01:58",
"end": "00:02:09",
"best": "00:02:03",
"relevance": 0.23974405229091644
},
{
"documentId": "02a504c9cd28296a8b74394ed7488045",
"documentKind": "VideoFrame",
"start": "00:02:27",
"end": "00:02:29",
"best": "00:02:27",
"relevance": 0.23762696981430054
},
{
"documentId": "02a504c9cd28296a8b74394ed7488045",
"documentKind": "VideoFrame",
"start": "00:00:26",
"end": "00:00:27",
"best": "00:00:26",
"relevance": 0.23250913619995117
},
]
}
Rechercher avec la fonctionnalité « speech »
Pour effectuer une recherche à l’aide de la fonctionnalité « speech », utilisez l’API Rechercher par texte avec le filtre speech
, en fournissant le texte de la requête et tout autre filtre souhaité.
curl.exe -v -X POST "https://<YOUR_ENDPOINT_URL>com/computervision/retrieval/indexes/my-video-index:queryByText?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
'queryText': 'leave the area',
'dedup': false,
'filters': {
'stringFilters': [
{
'fieldName': 'cameraId',
'values': [
'camera1'
]
}
],
'featureFilters': ['speech']
}
}"
Réponse :
HTTP/1.1 200 OK
Content-Length: 49001
Content-Type: application/json; charset=utf-8
request-id: b54577bb-1f46-44d8-9a91-c9326df3ac23
api-supported-versions: 2023-05-01-preview
x-envoy-upstream-service-time: 148
Date: Thu, 06 Jul 2023 18:43:07 GMT
Connection: close
{
"value": [
{
"documentId": "02a504c9cd28296a8b74394ed7488045",
"documentKind": "SpeechTextSegment",
"start": "00:07:07.8400000",
"end": "00:07:08.4400000",
"best": "00:07:07.8400000",
"relevance": 0.8597901463508606
},
{
"documentId": "02a504c9cd28296a8b74394ed7488045",
"documentKind": "SpeechTextSegment",
"start": "00:07:02.0400000",
"end": "00:07:03.0400000",
"best": "00:07:02.0400000",
"relevance": 0.8506758213043213
},
{
"documentId": "02a504c9cd28296a8b74394ed7488045",
"documentKind": "SpeechTextSegment",
"start": "00:07:10.4400000",
"end": "00:07:11.5200000",
"best": "00:07:10.4400000",
"relevance": 0.8474636673927307
}
]
}