Condividi tramite


Eseguire il recupero video usando la vettorializzazione (versione 4.0 preview)

Le API di recupero video di Intelligenza artificiale di Azure fanno parte di Visione artificiale di Azure e consentono agli sviluppatori di creare un indice, aggiungere documenti (video e immagini) e cercare con il linguaggio naturale. Gli sviluppatori possono definire schemi di metadati per ogni indice e inserire metadati al servizio per facilitare il recupero. Gli sviluppatori possono anche specificare quali funzionalità estrarre dall'indice (visione, riconoscimento vocale) e filtrare la ricerca in base alle funzionalità.

Prerequisiti

Requisiti di input

Formati supportati

File format Descrizione
asf ASF (Advanced/Active Streaming Format)
avi AVI (Audio Video Interleaved)
flv DASH (Flash Video)
matroskamm, webm Matroska/ WebM
mov,mp4,m4a,3gp,,3g2mj2 QuickTime/MOV

Codec video supportati

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

Codec audio supportati

Codec Formato
aac AAC (codifica audio avanzata)
mp3 MP3 (mpeg audio layer 3)
pcm PCM (non compresso)
vorbis Vorbis
wmav2 Windows Media Audio 2

Chiamare le API di recupero video

Per usare le API recupero video in un modello tipico, seguire questa procedura:

  1. Creare un indice usando PUT - Creare un indice.
  2. Aggiungere documenti video all'indice usando PUT - CreateIngestion.
  3. Attendere il completamento dell'inserimento, controllando con GET - ListIngestions.
  4. Cercare una parola chiave o una frase usando POST - SearchByText.

Le API recupero video consentono a un utente di aggiungere metadati ai file video. I metadati sono informazioni aggiuntive associate ai file video, ad esempio "ID Fotocamera", "Timestamp" o "Posizione" che possono essere usate per organizzare, filtrare e cercare video specifici. In questo esempio viene illustrato come creare un indice, aggiungere file video con metadati associati ed eseguire ricerche usando funzionalità diverse.

Passaggio 1: Creare un indice

Per iniziare, è necessario creare un indice per archiviare e organizzare i file video e i relativi metadati. L'esempio seguente illustra come creare un indice denominato "my-video-index" usando l'API Crea indice .

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'
    }
  ]
}"

Risposta:

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"
}

Passaggio 2: Aggiungere file video all'indice

Successivamente, è possibile aggiungere file video all'indice con i metadati associati. L'esempio seguente illustra come aggiungere due file video all'indice usando GLI URL di firma di accesso condiviso con l'API Di inserimento crea.

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'
      }
    }
  ]
}"

Risposta:

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"
}

Passaggio 3: Attendere il completamento dell'inserimento

Dopo aver aggiunto file video all'indice, viene avviato il processo di inserimento. L'operazione potrebbe richiedere del tempo a seconda delle dimensioni e del numero di file. Per assicurarsi che l'inserimento sia completato prima di eseguire ricerche, è possibile usare l'API Recupera inserimento per controllare lo stato. Attendere che la chiamata venga restituita "state" = "Completed" prima di procedere al passaggio successivo.

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>"

Risposta:

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"
    }
  ]
}

Passaggio 4: Eseguire ricerche con i metadati

Dopo aver aggiunto i file video all'indice, è possibile cercare video specifici usando i metadati. Questo esempio illustra due tipi di ricerche: una che usa la funzionalità "visione" e un'altra usando la funzionalità "riconoscimento vocale".

Cercare con la funzionalità "visione"

Per eseguire una ricerca usando la funzionalità "visione", usare l'API Cerca per testo con il vision filtro, specificando il testo della query e gli altri filtri desiderati.

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']
  }
}"

Risposta:

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
    },
  ]
}

Cercare con la funzionalità "riconoscimento vocale"

Per eseguire una ricerca usando la funzionalità di riconoscimento vocale, usare l'API Cerca per testo con il speech filtro, specificando il testo della query ed eventuali altri filtri desiderati.

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']
  }
}"

Risposta:

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
    }
  ]
}

Passaggi successivi

Concettirelativii