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
- Azure-abonnement: Maak een gratis abonnement aan.
- Zodra u uw Azure-abonnement hebt, maakt u een Vision-resource met behulp van de portal. Voor deze preview moet u uw resource maken in een van de volgende regio's: Australië - oost, Zwitserland - noord, Zweden - centraal of VS - oost.
- Een Azure Storage-resource - Maak er een
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 ,3g2 mj2 |
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:
- Een index maken met PUT - Een index maken.
- Voeg videodocumenten toe aan de index met PUT - CreateIngestion.
- Wacht tot de opname is voltooid en controleer met GET - ListIngestions.
- Zoek naar een trefwoord of woordgroep met POST - SearchByText.
Api's voor het ophalen van video gebruiken voor zoekopdrachten op basis van metagegevens
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
}
]
}