{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"About Wowza Video Intelligence Framework (VIF)","description":"Developer documentation for Wowza","siteUrl":"https://developer.wowza.com","keywords":"wowza video developer portal, api reference docs","lang":"en-US","image":"https://www.wowza.com/wp-content/uploads/Graphics-Social-Profile-Images-Docs-Resources-1024x512-1.jpg","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"about-wowza-video-intelligence-framework-vif","__idx":0},"children":["About Wowza Video Intelligence Framework (VIF)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VIF adds real-time AI analysis to live streams in Wowza Streaming Engine — object detection, scene"," ","understanding, and vision-language model (VLM) analysis — without a separate video pipeline. It's built as"," ","two components: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["VIC"]},", a plugin running inside Streaming Engine, and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["VIS"]},", a standalone GPU inference"," ","service. VIC forwards frames to VIS over a WebSocket connection and receives detection results back."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"three-ways-to-analyze-a-frame","__idx":1},"children":["Three ways to analyze a frame"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Object detection"]}," — RF-DETR models (four size/speed variants), with tracking handled by ByteTrack."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Scene understanding"]}," — whole-frame classification, so results describe the scene rather than"," ","individual boxes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["VLM analysis"]}," — frames go to a vision-language model instead of a fixed classifier. Three modes:"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Detect"]}," (open-vocabulary class list), ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Describe"]}," (free-text description), and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Custom"]}," (your own"," ","prompt and, optionally, your own output schema). VIF ships a ready-to-run OpenAI-compatible model"," ","sidecar, or you can point it at a hosted endpoint."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"built-to-be-extended","__idx":2},"children":["Built to be extended"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Detection results reach the outside world through event listeners — four ship built-in (ID3 metadata,"," ","webhooks, log files, overlays), and you can write your own. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IVifEventListener"]}," is a real, versioned Java"," ","interface with five methods (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onInit"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onShutdown"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["immediate"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["batch"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rollup"]},"), all declared as"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["default"]},", so an implementation only overrides what it actually uses. Detection results are delivered as"," ","typed classes — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ObjectDetectionResponse"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SceneDetectionResponse"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VlmDetectionResponse"]}," — not just raw"," ","JSON."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The plugin API is published on Maven Central (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["com.wowza.wms.plugin.videointelligence:wse-plugin-video-intelligence"]},"),"," ","so it's a normal ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compileOnly"]}," Gradle/Maven dependency — no separate SDK download required to build a"," ","listener against it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VIF also exposes a REST API for managing stream configuration and querying results programmatically,"," ","alongside the WSE Manager UI."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"deployment","__idx":3},"children":["Deployment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VIF runs via Docker Compose (the most common path), as a manually installed plugin on an existing WSE"," ","instance, or as a self-contained native installer for the standalone VIS service on Windows or Linux —"," ","useful when Docker isn't an option in your environment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"see-also","__idx":4},"children":["See also"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/create-a-video-intelligence-event-listener"},"children":["Create a custom VIF event listener"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/wowza-video-intelligence-framework/vif-custom-event-listener-api-reference"},"children":["VIF Custom Event Listener API Reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/use-vlm-analysis-in-vif"},"children":["Use VLM analysis in VIF"]}]}]}]},"headings":[{"value":"About Wowza Video Intelligence Framework (VIF)","id":"about-wowza-video-intelligence-framework-vif","depth":1},{"value":"Three ways to analyze a frame","id":"three-ways-to-analyze-a-frame","depth":2},{"value":"Built to be extended","id":"built-to-be-extended","depth":2},{"value":"Deployment","id":"deployment","depth":2},{"value":"See also","id":"see-also","depth":2}],"frontmatter":{"seo":{"title":"About Wowza Video Intelligence Framework (VIF)"}},"lastModified":"2026-07-30T19:25:09.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/wowza-video-intelligence-framework/about-wowza-video-intelligence-framework","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}