Aracılığıyla paylaş


Vektörleştirme kullanarak video alma işlemi yapma (sürüm 4.0 önizleme)

Azure AI Video Alma API'leri, Azure AI Vision'ın bir parçasıdır ve geliştiricilerin dizin oluşturmasına, belgeler (videolar ve görüntüler) eklemesine ve doğal dille arama yapmasına olanak tanır. Geliştiriciler her dizin için meta veri şemaları tanımlayabilir ve alma işlemine yardımcı olmak için hizmete meta verileri alabilir. Geliştiriciler ayrıca dizinden ayıklanması gereken özellikleri (görüntü, konuşma) belirtebilir ve aramalarını özelliklere göre filtreleyebilir.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure aboneliğinizi aldıktan sonra portalı kullanarak bir Görüntü İşleme kaynağı oluşturun. Bu önizleme için kaynağınızı aşağıdaki bölgelerden birinde oluşturmanız gerekir: Doğu Avustralya, Kuzey İsviçre, Orta İsveç veya Doğu ABD.
  • Azure Depolama kaynağı - Oluşturma

Giriş gereksinimleri

Desteklenen biçimler

Dosya biçimi Açıklama
asf ASF (Gelişmiş / Etkin Akış Biçimi)
avi AVI (Araya Kaydedilen Ses Videosu)
flv FLV (Flash Video)
matroskamm, webm Matroska / WebM
mov,mp4,,m4a,3gp,3g2,mj2 QuickTime / MOV

Desteklenen video codec'leri

Codec Biçimlendir
h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 bölüm 10
h265 H.265/HEVC
libvpx-vp9 libvpx VP9 (codec vp9)
mpeg4 MPEG-4 bölüm 2

Desteklenen ses codec bileşenleri

Codec Biçimlendir
aac AAC (Gelişmiş Ses Kodlama)
mp3 MP3 (MPEG ses katmanı 3)
pcm PCM (sıkıştırılmamış)
vorbis Vorbis
wmav2 Windows Media Audio 2

Video Alma API'lerini çağırma

Video Alma API'lerini tipik bir düzende kullanmak için aşağıdaki adımları uygularsınız:

  1. PUT kullanarak dizin oluşturma - Dizin oluşturma.
  2. PUT - CreateIngestion kullanarak dizine video belgeleri ekleyin.
  3. Get - ListIngestions ile denetleyarak alımın tamamlanmasını bekleyin.
  4. POST - SearchByText kullanarak bir anahtar sözcük veya tümcecik arayın.

Video Alma API'leri, kullanıcının video dosyalarına meta veri eklemesine olanak tanır. Meta veriler, belirli videoları düzenlemek, filtrelemek ve aramak için kullanılabilecek "Kamera Kimliği", "Zaman Damgası" veya "Konum" gibi video dosyalarıyla ilişkilendirilmiş ek bilgilerdir. Bu örnekte dizin oluşturma, ilişkili meta verilerle video dosyaları ekleme ve farklı özellikleri kullanarak arama yapma işlemleri gösterilmektedir.

1. Adım: Dizin Oluşturma

Başlamak için, video dosyalarını ve meta verilerini depolamak ve düzenlemek için bir dizin oluşturmanız gerekir. Aşağıdaki örnekte, Dizin Oluştur API'sini kullanarak "my-video-index" adlı bir dizinin nasıl oluşturulacağı gösterilmektedir.

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

Yanıt:

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

2. Adım: Dizine video dosyaları ekleme

Ardından, ilişkili meta verileriyle birlikte dizine video dosyaları ekleyebilirsiniz. Aşağıdaki örnekte, Alma Oluşturma API'siyle SAS URL'lerini kullanarak dizine iki video dosyasının nasıl ekleneceği gösterilmektedir .

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

Yanıt:

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

3. Adım: Alımın tamamlanmasını bekleyin

Dizine video dosyaları ekledikten sonra alma işlemi başlar. Dosya boyutuna ve sayısına bağlı olarak biraz zaman alabilir. Aramalar gerçekleştirmeden önce alımın tamamlandığından emin olmak için Alma Alma API'sini kullanarak durumu deleyebilirsiniz. Sonraki adıma geçmeden önce bu çağrının döndürülmesini "state" = "Completed" bekleyin.

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

Yanıt:

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

4. Adım: Meta verilerle arama yapma

Dizine video dosyaları ekledikten sonra, meta verileri kullanarak belirli videoları arayabilirsiniz. Bu örnekte iki tür arama gösterilmektedir: biri "görüntü" özelliğini, diğeri ise "konuşma" özelliğini kullanarak.

"Görüntü işleme" özelliğiyle arama

"Görüntü" özelliğini kullanarak arama yapmak için, sorgu metnini ve istenen diğer filtreleri belirterek Filtreyle Birlikte vision Metne Göre Ara API'sini kullanın.

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

Yanıt:

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

"Konuşma" özelliğiyle arama

"Konuşma" özelliğini kullanarak arama yapmak için, filtreyle Birlikte Metne Göre Ara API'sini speech kullanarak sorgu metnini ve istenen diğer filtreleri sağlayın.

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

Yanıt:

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

Sonraki adımlar

Çok modüllü ekleme kavramları