Gör videohämtning med hjälp av vektorisering (version 4.0 förhandsversion)
API:er för videohämtning i Azure AI ingår i Azure AI Vision och gör det möjligt för utvecklare att skapa ett index, lägga till dokument (videor och bilder) i det och söka med naturligt språk. Utvecklare kan definiera metadatascheman för varje index och mata in metadata till tjänsten för att hjälpa till med hämtning. Utvecklare kan också ange vilka funktioner som ska extraheras från indexet (vision, tal) och filtrera deras sökning baserat på funktioner.
Förutsättningar
- Azure-prenumeration – Skapa en kostnadsfritt.
- När du har din Azure-prenumeration skapar du en Vision-resurs med hjälp av portalen. För den här förhandsversionen måste du skapa din resurs i någon av följande regioner – Australien, östra, Schweiz, norra, Sverige, centrala eller USA, östra.
- En Azure Storage-resurs – Skapa en
Indatakrav
Format som stöds
File format | beskrivning |
---|---|
asf |
ASF (avancerat/aktivt direktuppspelningsformat) |
avi |
AVI (interfolierad ljudvideo) |
flv |
FLV (Flash Video) |
matroskamm , webm |
Matroska/WebM |
mov ,mp4 ,m4a ,3gp ,3g2 ,mj2 |
QuickTime/MOV |
Video codecs som stöds
Codec | Format |
---|---|
h264 |
H.264 / AVC / MPEG-4 AVC / MPEG-4 del 10 |
h265 |
H.265/HEVC |
libvpx-vp9 |
libvpx VP9 (codec vp9) |
mpeg4 |
MPEG-4 del 2 |
Ljud codecs som stöds
Codec | Format |
---|---|
aac |
AAC (Avancerad ljudkodning) |
mp3 |
MP3 (MPEG-ljudskikt 3) |
pcm |
PCM (okomprimerad) |
vorbis |
Vorbis |
wmav2 |
Windows Media Audio 2 |
Anropa API:erna för videohämtning
Om du vill använda API:erna för videohämtning i ett typiskt mönster gör du följande:
- Skapa ett index med PUT – Skapa ett index.
- Lägg till videodokument i indexet med PUT – CreateIngestion.
- Vänta tills inmatningen har slutförts och kontrollera med GET – ListIngestions.
- Sök efter ett nyckelord eller en fras med POST – SearchByText.
Använda API:er för videohämtning för metadatabaserad sökning
API:erna för videohämtning gör det möjligt för en användare att lägga till metadata i videofiler. Metadata är ytterligare information som är associerad med videofiler som "Kamera-ID", "Tidsstämpel" eller "Plats" som kan användas för att organisera, filtrera och söka efter specifika videor. Det här exemplet visar hur du skapar ett index, lägger till videofiler med associerade metadata och utför sökningar med olika funktioner.
Steg 1: Skapa ett index
Börja med att skapa ett index för att lagra och organisera videofilerna och deras metadata. Exemplet nedan visar hur du skapar ett index med namnet "my-video-index" med hjälp av API:et Skapa index.
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'
}
]
}"
Svar:
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"
}
Steg 2: Lägg till videofiler i indexet
Sedan kan du lägga till videofiler i indexet med tillhörande metadata. Exemplet nedan visar hur du lägger till två videofiler i indexet med hjälp av SAS-URL:er med API:et Skapa inmatning .
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'
}
}
]
}"
Svar:
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"
}
Steg 3: Vänta tills inmatningen har slutförts
När du har lagt till videofiler i indexet startar inmatningsprocessen. Det kan ta lite tid beroende på storlek och antal filer. För att säkerställa att inmatningen är klar innan du utför sökningar kan du använda API:et Hämta inmatning för att kontrollera statusen. Vänta tills det här anropet returneras "state" = "Completed"
innan du fortsätter till nästa steg.
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>"
Svar:
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"
}
]
}
Steg 4: Utföra sökningar med metadata
När du har lagt till videofiler i indexet kan du söka efter specifika videor med hjälp av metadata. Det här exemplet visar två typer av sökningar: en med funktionen "vision" och en annan med hjälp av funktionen "speech".
Sök med funktionen "vision"
Om du vill utföra en sökning med hjälp av funktionen "vision" använder du API:et vision
Sök efter text med filtret och anger frågetexten och eventuella andra önskade filter.
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']
}
}"
Svar:
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
},
]
}
Sök med funktionen "speech"
Om du vill utföra en sökning med funktionen "speech" använder du API:et speech
Sök efter text med filtret och tillhandahåller frågetexten och andra önskade filter.
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']
}
}"
Svar:
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
}
]
}