# 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 = "" location = "norwayeast" 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.