Recuperación de vídeos mediante vectorización (versión preliminar de la versión 4.0)
Las API de recuperación de vídeo de Azure AI forman parte de la Visión de Azure AI y permiten a los desarrolladores crear un índice, agregarle documentos (vídeos e imágenes) y realizar búsquedas con lenguaje natural. Los desarrolladores pueden definir esquemas de metadatos para cada índice e ingerir metadatos en el servicio para ayudar con la recuperación. Los desarrolladores también pueden especificar qué características extraer del índice (visión y voz) y filtrar su búsqueda en función de estas.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Una vez que tenga la suscripción de Azure, cree un recurso de Vision mediante el portal. Para esta versión preliminar, debe crear el recurso en una de las siguientes regiones: Este de Australia, Norte de Suiza, Centro de Suecia o Este de EE. UU.
- Un recurso de Azure Storage: Crear uno
Requisitos de entrada
Formatos compatibles
Formato de archivo | Descripción |
---|---|
asf |
ASF (Formato Avanzado / Streaming Activo) |
avi |
AVI (audio y vídeo intercalado) |
flv |
FLV (Vídeo flash) |
matroskamm , webm |
Matroska / WebM |
mov ,mp4 ,m4a ,3gp ,3g2 ,mj2 |
QuickTime / MOV |
Códecs de vídeo compatibles
Códec | Formato |
---|---|
h264 |
H.264 / AVC / MPEG-4 AVC / MPEG-4 parte 10 |
h265 |
H.265/HEVC |
libvpx-vp9 |
libvpx VP9 (códec vp9) |
mpeg4 |
MPEG-4, parte 2 |
Códecs de audio compatibles
Códec | Formato |
---|---|
aac |
AAC (codificación de audio avanzada) |
mp3 |
MP3 (capa de audio MPEG 3) |
pcm |
PCM (sin comprimir) |
vorbis |
Vorbis |
wmav2 |
Windows Media Audio 2 |
Llamada a las API de recuperación de vídeo
Para utilizar las API de recuperación de vídeo en un patrón típico, seguiría los siguientes pasos:
- Cree un índice mediante PUT - Create an index.
- Agregue documentos de vídeo al índice mediante PUT: CreateIngestion.
- Espere a que se complete la ingesta, comprobando con GET - ListIngestions.
- Busque una palabra clave o frase mediante POST - SearchByText.
Uso de las API de recuperación de vídeo para la búsqueda basada en metadatos
Las API de recuperación de vídeo permiten al usuario agregar metadatos a archivos de vídeo. Los metadatos son información adicional asociada a los archivos de vídeo, como el "Id. de cámara", la "marca de tiempo" o la "ubicación", que puede utilizarse para organizar, filtrar y buscar vídeos específicos. En este ejemplo se muestra cómo crear un índice, agregar archivos de vídeo con metadatos asociados y realizar búsquedas mediante diferentes características.
Paso 1: Crear un índice
Para empezar, necesita crear un índice para almacenar y organizar los archivos de vídeo y sus metadatos. En el ejemplo siguiente se muestra cómo crear un índice denominado "my-video-index" mediante la API Crear índice.
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'
}
]
}"
Respuesta:
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"
}
Paso 2: Agregar archivos de vídeo al índice
A continuación, puede agregar archivos de vídeo al índice con sus metadatos asociados. En el ejemplo siguiente se muestra cómo agregar dos archivos de vídeo al índice mediante direcciones URL de SAS con la API Crear ingesta.
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'
}
}
]
}"
Respuesta:
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"
}
Paso 3: Esperar a que finalice la ingesta
Después de agregar archivos de vídeo al índice, se inicia el proceso de ingesta. Puede tardar algún tiempo en función del tamaño y el número de archivos. Para asegurarse de que la ingesta se ha completado antes de realizar búsquedas, puede usar la API Obtener ingesta para comprobar el estado. Espere a que esta llamada devuelva "state" = "Completed"
antes de continuar con el siguiente paso.
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>"
Respuesta:
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"
}
]
}
Paso 4: Realizar búsquedas con metadatos
Después de agregar archivos de vídeo al índice, puede buscar vídeos específicos mediante metadatos. En este ejemplo se muestran dos tipos de búsquedas: una que usa la característica "visión" y otra mediante la característica "voz".
Búsqueda con la característica "visión"
Para realizar una búsqueda mediante la característica "visión", use la API de Buscar por texto con el filtro vision
, especificando el texto de la consulta y cualquier otro filtro deseado.
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']
}
}"
Respuesta:
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
},
]
}
Búsqueda con la característica "voz"
Para realizar una búsqueda mediante la característica "voz", use la API de Buscar por texto con el filtro speech
, proporcionando el texto de la consulta y cualquier otro filtro deseado.
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']
}
}"
Respuesta:
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
}
]
}