Delen via


Video ophalen met vectorisatie (versie 4.0 preview)

Azure AI Video Retrieval-API's maken deel uit van Azure AI Vision en stellen ontwikkelaars in staat om een index te maken, documenten (video's en afbeeldingen) eraan toe te voegen en te zoeken met natuurlijke taal. Ontwikkelaars kunnen metagegevensschema's definiëren voor elke index en metagegevens opnemen in de service om te helpen bij het ophalen. Ontwikkelaars kunnen ook opgeven welke functies moeten worden geëxtraheerd uit de index (visie, spraak) en hun zoekopdracht filteren op basis van functies.

Vereisten

Vereisten voor invoer

Ondersteunde indelingen

File format Beschrijving
asf ASF (Geavanceerde/actieve streaming-indeling)
avi AVI (Audio Video Interleaved)
flv GEHEUGENKAART (Flash Video)
matroskamm, webm Matroska / WebM
mov,mp4,m4a,,3gp,3g2mj2 QuickTime/MOV

Ondersteunde videocodecs

Codec Notatie
h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 deel 10
h265 H.265/HEVC
libvpx-vp9 libvpx VP9 (codec vp9)
mpeg4 MPEG-4 deel 2

Ondersteunde audiocodecs

Codec Notatie
aac AAC (Geavanceerde audiocodering)
mp3 MP3 (MPEG-audiolaag 3)
pcm PCM (niet gecomprimeerd)
vorbis Vorbis
wmav2 Windows Media Audio 2

De API's voor het ophalen van video's aanroepen

Als u de API's voor het ophalen van video's in een typisch patroon wilt gebruiken, voert u de volgende stappen uit:

  1. Een index maken met PUT - Een index maken.
  2. Voeg videodocumenten toe aan de index met PUT - CreateIngestion.
  3. Wacht tot de opname is voltooid en controleer met GET - ListIngestions.
  4. Zoek naar een trefwoord of woordgroep met POST - SearchByText.

Met de API's voor het ophalen van video's kan een gebruiker metagegevens toevoegen aan videobestanden. Metagegevens zijn aanvullende informatie die is gekoppeld aan videobestanden, zoals 'Camera-id', 'Tijdstempel' of 'Locatie' die kan worden gebruikt om specifieke video's te ordenen, te filteren en te zoeken. In dit voorbeeld ziet u hoe u een index maakt, videobestanden toevoegt met gekoppelde metagegevens en zoekopdrachten uitvoert met behulp van verschillende functies.

Stap 1: Een index maken

Om te beginnen moet u een index maken om de videobestanden en de metagegevens ervan op te slaan en te ordenen. In het onderstaande voorbeeld ziet u hoe u een index met de naam 'my-video-index' maakt met behulp van de Create Index-API.

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

Antwoord:

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

Stap 2: Videobestanden toevoegen aan de index

Vervolgens kunt u videobestanden toevoegen aan de index met de bijbehorende metagegevens. In het onderstaande voorbeeld ziet u hoe u twee videobestanden toevoegt aan de index met behulp van SAS-URL's met de API voor opname maken .

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

Antwoord:

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

Stap 3: wacht totdat de opname is voltooid

Nadat u videobestanden aan de index hebt toegevoegd, wordt het opnameproces gestart. Het kan enige tijd duren, afhankelijk van de grootte en het aantal bestanden. Om ervoor te zorgen dat de opname is voltooid voordat u zoekopdrachten uitvoert, kunt u de Get Ingestion-API gebruiken om de status te controleren. Wacht tot deze aanroep wordt geretourneerd "state" = "Completed" voordat u doorgaat met de volgende stap.

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

Antwoord:

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

Stap 4: Zoekopdrachten uitvoeren met metagegevens

Nadat u videobestanden aan de index hebt toegevoegd, kunt u zoeken naar specifieke video's met behulp van metagegevens. In dit voorbeeld ziet u twee typen zoekopdrachten: één met behulp van de functie 'vision' en een ander met de functie 'spraak'.

Zoeken met de functie Vision

Als u een zoekopdracht wilt uitvoeren met behulp van de functie 'vision', gebruikt u de API Voor zoeken op tekst met het vision filter, waarbij u de querytekst en eventuele andere gewenste filters opgeeft.

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

Antwoord:

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

Zoeken met de functie 'spraak'

Als u een zoekopdracht wilt uitvoeren met behulp van de functie 'spraak', gebruikt u de API Voor zoeken op tekst met het speech filter, waarbij u de querytekst en andere gewenste filters oplevert.

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

Antwoord:

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

Volgende stappen

Concepten van multimodale insluitingen