Bagikan melalui


Lakukan pengambilan video menggunakan vektorisasi (pratinjau versi 4.0)

AZURE AI Video Retrieval API adalah bagian dari Azure AI Vision dan memungkinkan pengembang untuk membuat indeks, menambahkan dokumen (video dan gambar) ke dalamnya, dan mencari dengan bahasa alami. Pengembang dapat menentukan skema metadata untuk setiap indeks dan menyerap metadata ke layanan untuk membantu pengambilan. Pengembang juga dapat menentukan fitur apa yang akan diekstrak dari indeks (visi, ucapan) dan memfilter pencarian mereka berdasarkan fitur.

Prasyarat

Persyaratan input

Format yang didukung

Format file Deskripsi
asf ASF (Format Streaming Tingkat Lanjut / Aktif)
avi AVI (Audio Video Interleaved)
flv FLV (Video Flash)
matroskamm, webm Matroska / WebM
mov,mp4,,m4a,3gp,3g2,mj2 QuickTime / MOV

Codec video yang didukung

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

Codec audio yang didukung

Codec Format
aac AAC (Pengodian Audio Tingkat Lanjut)
mp3 MP3 (lapisan audio MPEG 3)
pcm PCM (tidak dikompresi)
vorbis Vorbis
wmav2 Windows Media Audio 2

Memanggil API Pengambilan Video

Untuk menggunakan API Pengambilan Video dalam pola umum, Anda akan melakukan langkah-langkah berikut:

  1. Buat indeks menggunakan PUT - Buat indeks.
  2. Tambahkan dokumen video ke indeks menggunakan PUT - CreateIngestion.
  3. Tunggu hingga penyerapan selesai, periksa dengan GET - ListIngestions.
  4. Cari kata kunci atau frasa menggunakan POST - SearchByText.

API Pengambilan Video memungkinkan pengguna untuk menambahkan metadata ke file video. Metadata adalah informasi tambahan yang terkait dengan file video seperti "ID Kamera," "Tanda Waktu," atau "Lokasi" yang dapat digunakan untuk mengatur, memfilter, dan mencari video tertentu. Contoh ini menunjukkan cara membuat indeks, menambahkan file video dengan metadata terkait, dan melakukan pencarian menggunakan fitur yang berbeda.

Langkah 1: Membuat Indeks

Untuk memulai, Anda perlu membuat indeks untuk menyimpan dan mengatur file video dan metadatanya. Contoh di bawah ini menunjukkan cara membuat indeks bernama "my-video-index" menggunakan 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'
    }
  ]
}"

Respons:

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

Langkah 2: Menambahkan file video ke indeks

Selanjutnya, Anda dapat menambahkan file video ke indeks dengan metadata terkait. Contoh di bawah ini menunjukkan cara menambahkan dua file video ke indeks menggunakan URL SAS dengan CREATE Ingestion API.

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

Respons:

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

Langkah 3: Tunggu penyerapan selesai

Setelah Anda menambahkan file video ke indeks, proses penyerapan dimulai. Mungkin perlu waktu tergantung pada ukuran dan jumlah file. Untuk memastikan penyerapan selesai sebelum melakukan pencarian, Anda dapat menggunakan Get Ingestion API untuk memeriksa status. Tunggu hingga panggilan ini kembali "state" = "Completed" sebelum melanjutkan ke langkah berikutnya.

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

Respons:

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

Langkah 4: Lakukan pencarian dengan metadata

Setelah menambahkan file video ke indeks, Anda dapat mencari video tertentu menggunakan metadata. Contoh ini menunjukkan dua jenis pencarian: satu menggunakan fitur "visi" dan yang lain menggunakan fitur "ucapan".

Cari dengan fitur "visi"

Untuk melakukan pencarian menggunakan fitur "visi", gunakan SEARCH By Text API dengan vision filter , menentukan teks kueri dan filter lain yang diinginkan.

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

Respons:

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

Cari dengan fitur "ucapan"

Untuk melakukan pencarian menggunakan fitur "ucapan", gunakan SEARCH By Text API dengan speech filter , menyediakan teks kueri dan filter lain yang diinginkan.

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

Respons:

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

Langkah berikutnya

Konsep penyematan multimodal