Reference files, test fixtures, the playground demo project and one design document now use generic, fictitious examples (buildings, energy, water, grants, municipal services). The playground demo (17 fixtures plus the embedded demo state) tells one consistent story: a municipal customer chatbot that pre-screens housing-benefit applications, classified under Annex III point 5(a). The embedded demo copies were edited in place rather than regenerated, because they already carry newer AI Act dates than the fixture files. Legal text is unchanged. Test semantics are unchanged. Four dark-theme onboarding screenshots with outdated placeholder text are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
399 lines
14 KiB
Markdown
399 lines
14 KiB
Markdown
# Azure Video Indexer for Enterprise AI
|
|
|
|
**Last updated:** 2026-02
|
|
**Status:** GA
|
|
**Category:** Multi-Modal AI
|
|
**Type:** reference
|
|
|
|
---
|
|
|
|
## Innhold
|
|
|
|
- [Introduksjon](#introduksjon)
|
|
- [Video Ingestion og Processing Workflows](#video-ingestion-og-processing-workflows)
|
|
- [Face, Speech og Content Detection](#face-speech-og-content-detection)
|
|
- [Knowledge Graph Construction frå Video](#knowledge-graph-construction-frå-video)
|
|
- [Integrasjon med AI Services](#integrasjon-med-ai-services)
|
|
- [Brukstilfelle for norsk offentleg sektor](#brukstilfelle-for-norsk-offentleg-sektor)
|
|
- [For arkitekten](#for-arkitekten)
|
|
|
|
## Introduksjon
|
|
|
|
Azure AI Video Indexer er ein omfattande AI-teneste som ekstraherer djupe innsikter frå video- og lydinnhald. Tenesta køyrer over 30 AI-modellar for å analysere visuelt og auditivt innhald, inkludert transkripsjon, ansiktsdeteksjon, objektgjenkjenning, sentimentanalyse, emneekstraksjon og mykje meir. Video Indexer er bygd på toppen av Azure AI-tenester som Speech, Vision, Translator og Face.
|
|
|
|
For norsk offentleg sektor er Video Indexer relevant for fleire scenario: arkivdigitalisering av historisk videomateriale, automatisk teksting av offentleg informasjonsmateriell, innhaldsmoderering, søk i store mediearkiv og tilgjengelegheit gjennom transkribering. Tenesta er tilgjengeleg både som skybasert løysing og som Azure Arc-utviding for edge-deployment.
|
|
|
|
Video Indexer tilbyr to hovudvariantar: ein skybasert applikasjon med fullt funksjonssett, og Video Indexer enabled by Azure Arc for hybrid- og edge-scenario med støtte for live videostraumar og lokale krav til datasuverenitet.
|
|
|
|
---
|
|
|
|
## Video Ingestion og Processing Workflows
|
|
|
|
### Arkitektur og prosesseringsflyt
|
|
|
|
```
|
|
Videofil/Lydsfil → Upload API → Azure Storage
|
|
↓
|
|
Indexing Pipeline
|
|
┌─────────────────┐
|
|
│ Audio-analyse │
|
|
│ - Transkripsjon │
|
|
│ - Taledeteksjon │
|
|
│ - Lydeffektar │
|
|
├─────────────────┤
|
|
│ Video-analyse │
|
|
│ - Ansiktsdeteksjon│
|
|
│ - OCR │
|
|
│ - Scenedeteksjon │
|
|
│ - Objektdeteksjon│
|
|
├─────────────────┤
|
|
│ Multi-channel │
|
|
│ - Nøkkelord │
|
|
│ - Emner │
|
|
│ - Sentiment │
|
|
│ - Named entities │
|
|
└─────────────────┘
|
|
↓
|
|
JSON Insights Output
|
|
↓
|
|
Azure Storage / Azure Search / API
|
|
```
|
|
|
|
### Deployment-alternativ
|
|
|
|
| Eigenskap | Cloud-basert | Azure Arc (Uploaded) | Azure Arc (Live) |
|
|
|-----------|-------------|---------------------|-----------------|
|
|
| **Transkripsjon** | Ja | Ja | Nei |
|
|
| **Omsetting** | Ja | Ja | Nei |
|
|
| **Keyframe-deteksjon** | Ja | Ja | Ja |
|
|
| **Objektdeteksjon** | Ja | Ja | Ja |
|
|
| **Scenedeteksjon** | Ja | Ja | Ja |
|
|
| **Oppsummering** | Ja | Ja | Ja |
|
|
| **Ansiktsdeteksjon** | Ja | Nei | Nei |
|
|
| **Kjendisidentifisering** | Ja | Nei | Nei |
|
|
| **OCR** | Ja | Nei | Nei |
|
|
| **Sentimentanalyse** | Ja | Nei | Nei |
|
|
| **Live video** | Nei | Nei | Ja |
|
|
| **Tilpassa AI-innsikter** | Nei | Nei | Ja |
|
|
|
|
### Filavgrensingar
|
|
|
|
| Parameter | Verdi |
|
|
|-----------|-------|
|
|
| **Maks filstorleik** | 30 GB |
|
|
| **Maks videolengde** | 4 timar |
|
|
| **Tilrådde FPS** | Maks 30 FPS |
|
|
| **Tilrådde oppløysing** | HD (maks) |
|
|
| **Maks personar per frame** | 10 |
|
|
| **Minimum tale for analyse** | 1 minutt spontan samtale |
|
|
|
|
### Upload og indexering via API
|
|
|
|
```python
|
|
import requests
|
|
|
|
account_id = "<your_account_id>"
|
|
location = "norwayeast"
|
|
access_token = "<your_access_token>"
|
|
|
|
# Last opp og start indexering
|
|
upload_url = (
|
|
f"https://api.videoindexer.ai/{location}/Accounts/{account_id}"
|
|
f"/Videos?name=kommunestyremote-2026&language=nb-NO"
|
|
f"&indexingPreset=AdvancedAudio"
|
|
f"&accessToken={access_token}"
|
|
)
|
|
|
|
with open("kommunestyremote.mp4", "rb") as video_file:
|
|
response = requests.post(
|
|
upload_url,
|
|
files={"file": video_file},
|
|
headers={"Content-Type": "multipart/form-data"}
|
|
)
|
|
|
|
video_id = response.json()["id"]
|
|
print(f"Video ID: {video_id} — Status: {response.json()['state']}")
|
|
```
|
|
|
|
### Indexering-presets
|
|
|
|
| Preset | Brukstilfelle | Inkluderte modellar |
|
|
|--------|--------------|-------------------|
|
|
| **Default** | Standard analyse | Grunnleggjande video + audio |
|
|
| **AdvancedAudio** | Møtetranskripsjoner, podkastar | Full audio-analyse inkl. lydeffektar |
|
|
| **AdvancedVideo** | Visuell analyse, overvaking | Full video-analyse |
|
|
| **AdvancedVideoAndAudio** | Komplett analyse | Alle modellar aktivert |
|
|
| **BasicAudio** | Rask transkripsjon | Berre transkripsjon og omsetting |
|
|
|
|
---
|
|
|
|
## Face, Speech og Content Detection
|
|
|
|
### Ansikts- og persondeteksjon
|
|
|
|
Video Indexer tilbyr eit hierarki av ansikts- og personrelaterte innsikter:
|
|
|
|
| Funksjon | Forklaring | Avgrensa tilgang? |
|
|
|----------|-----------|------------------|
|
|
| **Face detection** | Detekterer og grupperer ansikt i video | Nei |
|
|
| **Celebrity identification** | Identifiserer 1M+ kjende personar | Nei |
|
|
| **Account-based face identification** | Trenar modell for spesifikke personar | Ja (søknad krevst) |
|
|
| **Observed people detection** | Detekterer personar med bounding boxes | Nei |
|
|
| **Matched person** | Koplar observerte personar med ansikt | Nei |
|
|
| **Detected clothing** | Klassifiserer klede (lang/kort erme, etc.) | Nei |
|
|
| **Thumbnail extraction** | Ekstraherer beste ansiktsbilde per person | Nei |
|
|
|
|
> **Viktig for offentleg sektor:** Ansiktsidentifisering (account-based) krev godkjenning og må brukast i samsvar med personopplysningslova og DPIA-krav.
|
|
|
|
### Talebaserte innsikter
|
|
|
|
| Funksjon | Detaljar |
|
|
|----------|---------|
|
|
| **Transkripsjon** | Automatisk tale-til-tekst med språkdeteksjon |
|
|
| **Talarenummerering** | Identifiserer kven som sa kva (maks 16 talarar) |
|
|
| **Talarstatistikk** | Prosentfordeling av taletid |
|
|
| **Omsetting** | Automatisk omsetting til mange språk |
|
|
| **Tekstbasert emosjonsdeteksjon** | Glede, tristheit, sinne, frykt frå transkripsjon |
|
|
| **Tekstmoderering** | Deteksjon av eksplisitt tekstinnhald |
|
|
| **Tilpassa transkripsjon (CRIS)** | Trenar bransjespesifikke talemodular |
|
|
| **Lydeffektdeteksjon** | Alarm, hundebjeffing, publikumsreaksjonar, skot, latter |
|
|
|
|
### OCR og visuell tekstgjenkjenning
|
|
|
|
Video Indexer ekstraherer tekst frå bilete og video gjennom OCR:
|
|
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"text": "Direktoratet for digital tjenesteutvikling",
|
|
"confidence": 0.95,
|
|
"left": 120,
|
|
"top": 50,
|
|
"width": 340,
|
|
"height": 45,
|
|
"language": "nb",
|
|
"instances": [
|
|
{
|
|
"adjustedStart": "0:00:05.12",
|
|
"adjustedEnd": "0:00:12.45",
|
|
"start": "0:00:05.12",
|
|
"end": "0:00:12.45"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Innhaldsmoderering
|
|
|
|
| Type | Kva blir detektert |
|
|
|------|-------------------|
|
|
| **Visuell moderering** | Vaksent og upassande visuelt innhald |
|
|
| **Tekstmoderering** | Eksplisitt innhald i transkripsjon |
|
|
| **Svart frame** | Svarte frames (indikerer redigering/overgangar) |
|
|
|
|
---
|
|
|
|
## Knowledge Graph Construction frå Video
|
|
|
|
### Emne- og entitetsekstraksjon
|
|
|
|
Video Indexer bygger ein kunnskapsgraf frå videoinnhald gjennom fleire lag av analyse:
|
|
|
|
**Lag 1: Basisdatasett**
|
|
- Transkripsjon (tale → tekst)
|
|
- OCR (visuell tekst)
|
|
- Ansikt og personar
|
|
|
|
**Lag 2: Semantisk anriking**
|
|
- Nøkkelord (frå tale og visuell tekst)
|
|
- Named entities (merkevarar, stader, personar)
|
|
- Emner (basert på IPTC, Wikipedia, VI-ontologi)
|
|
|
|
**Lag 3: Strukturell analyse**
|
|
- Scenedeteksjon (basert på visuelle endringar)
|
|
- Shot detection (kamerabytter)
|
|
- Keyframe-ekstraksjon
|
|
- Rullande credits-identifisering
|
|
|
|
### Emne-inference med hierarkisk ontologi
|
|
|
|
Video Indexer brukar tre ontologiar for emneinferens:
|
|
|
|
| Ontologi | Bruk | Eksempel |
|
|
|----------|------|---------|
|
|
| **IPTC** | International Press Telecommunications Council | Økonomi, Sport, Politikk |
|
|
| **Wikipedia** | Encyclopedisk kategorisering | Spesifikke teknologiar, stader |
|
|
| **VI Hierarchical** | Video Indexer sin eiga ontologi | Bransjespesifikke emne |
|
|
|
|
```json
|
|
{
|
|
"topics": [
|
|
{
|
|
"id": 1,
|
|
"name": "Energi",
|
|
"referenceId": "Miljø/Energi",
|
|
"referenceType": "VideoIndexer",
|
|
"confidence": 0.89,
|
|
"language": "nb-NO",
|
|
"instances": [
|
|
{
|
|
"adjustedStart": "0:02:15",
|
|
"adjustedEnd": "0:05:30"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Sentimentanalyse
|
|
|
|
Video Indexer utfører sentimentanalyse som kombinerer tale og visuell tekst:
|
|
|
|
| Sentiment | Skala | Brukstilfelle |
|
|
|-----------|-------|--------------|
|
|
| Positivt | 0.0 - 1.0 | Brukaropplevingsevaluering |
|
|
| Negativt | 0.0 - 1.0 | Klagebehandling, krisekommunikasjon |
|
|
| Nøytralt | 0.0 - 1.0 | Bakgrunnsinnhald |
|
|
|
|
---
|
|
|
|
## Integrasjon med AI Services
|
|
|
|
### Logic Apps og Power Automate
|
|
|
|
Video Indexer integrerer med serverless-tenester for automatiserte arbeidsflyttar:
|
|
|
|
**Flyt 1: Upload og indexering**
|
|
```
|
|
Blob Storage trigger → Video Indexer Upload → Callback URL
|
|
```
|
|
|
|
**Flyt 2: Insights-ekstraksjon**
|
|
```
|
|
HTTP trigger (callback) → Get Video Index → Save to Blob/Cosmos DB
|
|
```
|
|
|
|
```json
|
|
{
|
|
"definition": {
|
|
"triggers": {
|
|
"When_a_blob_is_added_or_modified": {
|
|
"type": "ApiConnection",
|
|
"inputs": {
|
|
"host": { "connection": { "name": "@parameters('$connections')['azureblob']['connectionId']" } },
|
|
"method": "get",
|
|
"path": "/datasets/default/triggers/batch/onupdatedfile"
|
|
}
|
|
}
|
|
},
|
|
"actions": {
|
|
"Upload_video_and_index": {
|
|
"type": "ApiConnection",
|
|
"inputs": {
|
|
"host": { "connection": { "name": "@parameters('$connections')['videoindexer-v2']['connectionId']" } },
|
|
"method": "post",
|
|
"path": "/northeurope/Accounts/{accountId}/Videos",
|
|
"queries": {
|
|
"name": "@triggerBody()?['Name']",
|
|
"videoUrl": "@triggerBody()?['WebUrl']",
|
|
"language": "nb-NO",
|
|
"callbackUrl": "@listCallbackUrl()"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Azure AI Search-integrasjon
|
|
|
|
Video Indexer-innsikter kan indekserast i Azure AI Search for djupt søk:
|
|
|
|
| Indeksfelt | Kjelde | Søketype |
|
|
|-----------|--------|---------|
|
|
| `transcript` | Tale-til-tekst | Fulltekst |
|
|
| `keywords` | Nøkkelordekstraksjon | Filtrering/fasettert |
|
|
| `faces` | Ansiktsdeteksjon | Filtrering |
|
|
| `topics` | Emneinferens | Fasettert søk |
|
|
| `namedEntities` | NLP-ekstraksjon | Fulltekst + filtrering |
|
|
| `ocr` | Visuell tekst | Fulltekst |
|
|
| `sentiments` | Sentimentanalyse | Range-filtrering |
|
|
|
|
### Azure Functions for hendingsbasert prosessering
|
|
|
|
```python
|
|
import azure.functions as func
|
|
import requests
|
|
import json
|
|
|
|
def main(msg: func.QueueMessage) -> None:
|
|
"""Process Video Indexer callback."""
|
|
message = json.loads(msg.get_body().decode('utf-8'))
|
|
video_id = message['id']
|
|
account_id = os.environ['VIDEO_INDEXER_ACCOUNT_ID']
|
|
location = os.environ['VIDEO_INDEXER_LOCATION']
|
|
|
|
# Hent innsikter
|
|
insights_url = (
|
|
f"https://api.videoindexer.ai/{location}/Accounts/{account_id}"
|
|
f"/Videos/{video_id}/Index"
|
|
)
|
|
|
|
response = requests.get(
|
|
insights_url,
|
|
headers={"Authorization": f"Bearer {get_access_token()}"}
|
|
)
|
|
|
|
insights = response.json()
|
|
|
|
# Prosesser for downstream-system
|
|
process_transcription(insights.get('videos', [{}])[0].get('insights', {}).get('transcript', []))
|
|
process_topics(insights.get('videos', [{}])[0].get('insights', {}).get('topics', []))
|
|
```
|
|
|
|
### Edge-deployment med Azure Arc
|
|
|
|
For norsk offentleg sektor med strenge krav til datalokalitet:
|
|
|
|
| Funksjon | Fordel for offentleg sektor |
|
|
|----------|---------------------------|
|
|
| **On-premises prosessering** | Data forlèt ikkje organisasjonen |
|
|
| **Live videoanalyse** | Sanntidsovervaking av infrastruktur |
|
|
| **Tilpassa AI-innsikter** | Definer eigne deteksjonsreglar |
|
|
| **Kubernetes-kompatibel** | Fleksibel infrastruktur |
|
|
|
|
---
|
|
|
|
## Brukstilfelle for norsk offentleg sektor
|
|
|
|
### Arkivdigitalisering
|
|
|
|
| Steg | Verktøy | Output |
|
|
|------|---------|--------|
|
|
| 1. Digitalisering | Skanning/digitalisering | Videofiler |
|
|
| 2. Indexering | Video Indexer (AdvancedVideoAndAudio) | JSON-innsikter |
|
|
| 3. Transkripsjon | Automatisk med norsk språkmodell | Tekst med tidskoder |
|
|
| 4. Søkbarheit | Azure AI Search | Fulltekst + semantisk søk |
|
|
| 5. Tilgjengelegheit | Automatisk teksting | WebVTT/SRT-filer |
|
|
|
|
### Kommunestyremøte-automatisering
|
|
|
|
```
|
|
Live-stream → Azure Arc Video Indexer → Sanntids-transkripsjon
|
|
→ Talaridentifisering
|
|
→ Emnedeteksjon
|
|
→ Automatisk teksting
|
|
→ Søkbart arkiv
|
|
```
|
|
|
|
---
|
|
|
|
## For arkitekten
|
|
|
|
- **Video Indexer køyrer 30+ AI-modellar** per video, inkludert transkripsjon, ansiktsdeteksjon, OCR, sentimentanalyse og emneekstraksjon. Vurder kva preset som gir best verdi for pengane basert på brukstilfellet.
|
|
- **Azure Arc-varianten er avgjerande for datasuverenitet** i norsk offentleg sektor. Live videoanalyse køyrer lokalt, medan full indexering kan gjerast hybrid.
|
|
- **Ansiktsidentifisering krev godkjenning** og må alltid kombinerast med DPIA i offentleg sektor. Bruk anonymisering der mogleg.
|
|
- **Integrer med Logic Apps / Power Automate** for automatiserte arkiverings- og publiseringsflyttar. Callback-URL-mønsteret gir asynkron prosessering utan polling.
|
|
- **Kombiner med Azure AI Search for djupt søk** i store videoarkiv. Indekser transkripsjon, nøkkelord, emner og named entities for å gjere møtereferat og opplysingsmateriell søkbart.
|