Durchführen des Videoabrufs mithilfe der Vektorisierung (Version 4.0 Vorschau)
Die Videoabruf-APIs von Azure AI sind Teil von Azure AI Vision und ermöglichen Entwicklern das Erstellen eines Indexes, das Hinzufügen von Dokumenten (Videos und Bildern) und die Suche mit natürlicher Sprache. Entwickler*innen können Metadatenschemas für jeden Index definieren und Metadaten in den Dienst aufnehmen, die Abrufvorgänge unterstützen. Entwickler können auch angeben, welche Merkmale aus dem Index (Vision, Sprache) extrahiert werden sollen, und ihre Suche basierend auf Merkmalen filtern.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Sobald Sie Ihr Azure-Abonnement haben, erstellen Sie eine Vision-Ressource mithilfe des Portals. Für diese Vorschau müssen Sie Ihre Ressource in einer der folgenden Regionen erstellen: Australien Ost, Schweiz Nord, Schweden Zentral oder USA Ost.
- Eine Azure Storage-Ressource – Erstellen Sie eine
Eingabeanforderungen
Unterstützte Formate
Dateiformat | Beschreibung |
---|---|
asf |
ASF (Advanced / Active Streaming Format) |
avi |
AVI (Audio Video Interleaved) |
flv |
FLV (Flash Video) |
matroskamm , webm |
Matroska / WebM |
mov ,mp4 ,m4a ,3gp ,3g2 ,mj2 |
QuickTime / MOV |
Unterstützte Videocodecs
Codec | Format |
---|---|
h264 |
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 |
h265 |
H.265/HEVC |
libvpx-vp9 |
libvpx VP9 (Codec vp9) |
mpeg4 |
MPEG-4 Teil 2 |
Unterstützte Audiocodecs
Codec | Format |
---|---|
aac |
AAC (Advanced Audio Coding) |
mp3 |
MP3 (MPEG Audio Layer 3) |
pcm |
PCM (unkomprimiert) |
vorbis |
Vorbis |
wmav2 |
Windows Media Audio 2 |
Aufrufen der Videoabruf-APIs
Um die Videoabruf-APIs in einem typischen Muster zu verwenden, würden Sie die folgenden Schritte ausführen:
- Erstellen eines Indexes mithilfe von PUT – Erstellen eines Indexes.
- Fügen Sie dem Index Videodokumente mithilfe von PUT - CreateIngestion hinzu.
- Warten Sie, bis die Aufnahme abgeschlossen ist, und überprüfen Sie mit GET - ListIngestions.
- Suchen Sie nach einem Schlüsselwort oder Ausdruck mithilfe von POST - SearchByText.
Verwenden von Videoabruf-APIs für die metadatenbasierte Suche
Mit den Videoabruf-APIs kann ein Benutzer Metadaten zu Videodateien hinzufügen. Metadaten sind zusätzliche Informationen, die mit Videodateien zusammenhängen, wie z. B. „Kamera-ID“, „Zeitstempel“ oder „Standort“, die zum Organisieren, Filtern und Suchen nach bestimmten Videos verwendet werden können. In diesem Beispiel wird veranschaulicht, wie Sie einen Index erstellen, Videodateien mit zugehörigen Metadaten hinzufügen und Suchvorgänge mithilfe verschiedener Merkmale ausführen.
Schritt 1: Erstellen eines Index
Zunächst müssen Sie einen Index erstellen, um die Videodateien und deren Metadaten zu speichern und zu organisieren. Im folgenden Beispiel wird veranschaulicht, wie Sie mit der Create Index-API einen Index mit dem Namen „my-video-index“ erstellen.
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'
}
]
}"
Antwort:
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"
}
Schritt 2: Hinzufügen von Videodateien zum Index
Als Nächstes können Sie dem Index Videodateien mit den zugehörigen Metadaten hinzufügen. Im folgenden Beispiel wird erklärt, wie Sie mit der Create Ingestion-API dem Index zwei Videodateien mit SAS-URLs hinzufügen.
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'
}
}
]
}"
Antwort:
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"
}
Schritt 3: Warten, bis die Erfassung abgeschlossen ist
Nachdem Sie dem Index Videodateien hinzugefügt haben, wird der Erfassungsvorgang gestartet. Je nach Größe und Anzahl von Dateien kann es einige Zeit dauern. Um sicherzustellen, dass die Erfassung abgeschlossen ist, bevor Suchvorgänge ausgeführt werden, können Sie den Status mit der Get Ingestion-API überprüfen. Warten Sie, bis dieser Aufruf "state" = "Completed"
zurückgibt, bevor Sie mit dem nächsten Schritt fortfahren.
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>"
Antwort:
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"
}
]
}
Schritt 4: Durchführen von Suchvorgängen mit Metadaten
Nachdem Sie dem Index Videodateien hinzugefügt haben, können Sie mithilfe von Metadaten nach bestimmten Videos suchen. In diesem Beispiel werden zwei Arten von Suchvorgängen veranschaulicht: einer, der das Feature „Vision“ verwendet und eine anderer mit dem Feature „Sprache“.
Suche mit „Vision“-Funktion
Um eine Suche mit der „Vision“-Funktion durchzuführen, verwenden Sie die Search By Text-API mit dem Filter vision
und geben damit den Abfragetext und andere gewünschte Filter an.
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']
}
}"
Antwort:
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
},
]
}
Suche mit „Sprache"-Feature
Um eine Suche mit der „Speech“-Funktion durchzuführen, verwenden Sie die Search By Text-API mit dem Filter speech
und geben damit den Abfragetext und andere gewünschte Filter an.
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']
}
}"
Antwort:
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
}
]
}