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:
- PUT kullanarak dizin oluşturma - Dizin oluşturma.
- PUT - CreateIngestion kullanarak dizine video belgeleri ekleyin.
- Get - ListIngestions ile denetleyarak alımın tamamlanmasını bekleyin.
- POST - SearchByText kullanarak bir anahtar sözcük veya tümcecik arayın.
Meta veri tabanlı arama için Video Alma API'lerini kullanma
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin