# Azure Video Indexer for Enterprise AI

**Last updated:** 2026-02
**Status:** GA
**Category:** Multi-Modal AI

---

## 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": "Vegtrafikk",
      "referenceId": "Transport/Vegtrafikk",
      "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 Cosmo

- **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.
