Fazer recuperação de vídeo usando vetorização (versão 4.0 pré-visualização)
As APIs de Recuperação de Vídeo do Azure AI fazem parte do Azure AI Vision e permitem que os desenvolvedores criem um índice, adicionem documentos (vídeos e imagens) a ele e pesquisem com linguagem natural. Os desenvolvedores podem definir esquemas de metadados para cada índice e ingerir metadados para o serviço para ajudar na recuperação. Os desenvolvedores também podem especificar quais recursos extrair do índice (visão, fala) e filtrar sua pesquisa com base nos recursos.
Pré-requisitos
- Subscrição do Azure - Crie uma gratuitamente.
- Depois de ter sua assinatura do Azure, crie um recurso Visão usando o portal. Para essa visualização, você deve criar seu recurso em uma das seguintes regiões - Leste da Austrália, Norte da Suíça, Suécia Central ou Leste dos EUA.
- Um recurso de Armazenamento do Azure - Crie um
Requisitos de entrada
Formatos suportados
File format | Description |
---|---|
asf |
ASF (Formato de Streaming Avançado / Ativo) |
avi |
AVI (áudio e vídeo intercalado) |
flv |
FLV (Vídeo Flash) |
matroskamm , webm |
Matroska / WebM |
mov ,mp4 ,m4a ,3gp ,,3g2 mj2 |
QuickTime / MOV |
Codecs de vídeo suportados
Codec | Formato |
---|---|
h264 |
H.264 / AVC / MPEG-4 AVC / MPEG-4 parte 10 |
h265 |
H.265/HEVC |
libvpx-vp9 |
libvpx VP9 (codec vp9) |
mpeg4 |
MPEG-4 parte 2 |
Codecs de áudio suportados
Codec | Formato |
---|---|
aac |
AAC (Codificação Avançada de Áudio) |
mp3 |
MP3 (MPEG camada de áudio 3) |
pcm |
PCM (não comprimido) |
vorbis |
Vorbis |
wmav2 |
Áudio do Windows Media 2 |
Chamar as APIs de recuperação de vídeo
Para usar as APIs de recuperação de vídeo em um padrão típico, execute as seguintes etapas:
- Criar um índice usando PUT - Criar um índice.
- Adicione documentos de vídeo ao índice usando PUT - CreateIngestion.
- Aguarde a ingestão terminar, verificando com GET - ListIngestions.
- Procure uma palavra-chave ou frase usando POST - SearchByText.
Usar APIs de recuperação de vídeo para pesquisa baseada em metadados
As APIs de recuperação de vídeo permitem que um usuário adicione metadados a arquivos de vídeo. Metadados são informações adicionais associadas a arquivos de vídeo, como "ID da câmera", "Carimbo de data/hora" ou "Local", que podem ser usadas para organizar, filtrar e pesquisar vídeos específicos. Este exemplo demonstra como criar um índice, adicionar arquivos de vídeo com metadados associados e realizar pesquisas usando recursos diferentes.
Etapa 1: Criar um índice
Para começar, você precisa criar um índice para armazenar e organizar os arquivos de vídeo e seus metadados. O exemplo abaixo demonstra como criar um índice chamado "my-video-index" usando a API Create 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'
}
]
}"
Resposta:
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"
}
Etapa 2: Adicionar arquivos de vídeo ao índice
Em seguida, você pode adicionar arquivos de vídeo ao índice com seus metadados associados. O exemplo abaixo demonstra como adicionar dois arquivos de vídeo ao índice usando URLs SAS com a API Create 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'
}
}
]
}"
Resposta:
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"
}
Passo 3: Aguarde até que a ingestão termine
Depois de adicionar arquivos de vídeo ao índice, o processo de ingestão é iniciado. Pode levar algum tempo, dependendo do tamanho e do número de arquivos. Para garantir que a ingestão esteja completa antes de realizar pesquisas, você pode usar a API Get Ingestion para verificar o status. Aguarde até que esta chamada retorne "state" = "Completed"
antes de prosseguir para a próxima etapa.
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>"
Resposta:
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"
}
]
}
Etapa 4: Realizar pesquisas com metadados
Depois de adicionar arquivos de vídeo ao índice, você pode pesquisar vídeos específicos usando metadados. Este exemplo demonstra dois tipos de pesquisas: uma usando o recurso "visão" e outra usando o recurso "fala".
Pesquisa com recurso "visão"
Para realizar uma pesquisa usando o recurso "visão", use a API Pesquisar por texto com o vision
filtro, especificando o texto da consulta e quaisquer outros filtros desejados.
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']
}
}"
Resposta:
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
},
]
}
Pesquisa com recurso "fala"
Para realizar uma pesquisa usando o recurso "fala", use a API Pesquisar por texto com o speech
filtro, fornecendo o texto da consulta e quaisquer outros filtros desejados.
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']
}
}"
Resposta:
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
}
]
}