# matvp91/indigo-player

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/matvp91-indigo-player).**

1,246 stars · 61 forks · TypeScript · Apache-2.0

## Links

- GitHub: https://github.com/matvp91/indigo-player
- Homepage: https://matvp91.github.io/indigo-player/
- awesome-repositories: https://awesome-repositories.com/repository/matvp91-indigo-player.md

## Topics

`dash` `drm` `hls` `hlsjs` `html5-video` `mpeg-dash` `shaka-player` `video` `video-player`

## Description

Indigo Player is a JavaScript media framework designed for building custom web-based video playback experiences. It functions as a modular HTML5 video player that supports adaptive bitrate streaming for formats including HLS, MPEG-DASH, and MP4. The framework provides a consistent interface for rendering video content while managing stream quality, subtitle tracks, and thumbnail previews.

The player distinguishes itself through a plugin-based architecture that allows developers to extend core functionality without modifying primary logic. This modular design supports dynamic module loading, which optimizes performance by fetching playback components only when required. Furthermore, the player includes built-in support for digital rights management, enforcing encryption standards such as Widevine and PlayReady to secure premium content within the browser.

Beyond core playback, the system offers a comprehensive set of tools for integrating third-party advertising, analytics, and custom interface controls. It leverages native browser media engines to handle low-level decoding while providing an event-driven state management system to coordinate playback actions and UI updates.

## Tags

### Graphics & Multimedia

- [Video Playback Integrations](https://awesome-repositories.com/f/graphics-multimedia/video-frame-capture/canvas-frame-renderers/native-media-renderers/video-playback-integrations.md) — Integrates high-quality HLS and MPEG-DASH video streams into web applications for consistent cross-browser playback.
- [JavaScript Playback APIs](https://awesome-repositories.com/f/graphics-multimedia/audio-music/media-capture-and-playback/media-playback-controls/javascript-playback-apis.md) — Provides a JavaScript framework for building custom video playback experiences with dynamic module loading.
- [HTML5 Media Element Wrappers](https://awesome-repositories.com/f/graphics-multimedia/html5-media-element-wrappers.md) — Provides a consistent JavaScript control layer by wrapping native HTML5 video elements.
- [Adaptive Streaming Players](https://awesome-repositories.com/f/graphics-multimedia/media-players/adaptive-streaming-players.md) — Provides a comprehensive video playback component designed for adaptive bitrate streaming across multiple formats.
- [Media Source Extension Wrappers](https://awesome-repositories.com/f/graphics-multimedia/media-source-extension-wrappers.md) — Abstracts Media Source Extensions to enable adaptive streaming by feeding video segments into the browser buffer.
- [Adaptive Stream Players](https://awesome-repositories.com/f/graphics-multimedia/media-players/adaptive-streaming-players/adaptive-bitrate-streaming/adaptive-stream-players.md) — Optimizes playback performance by managing stream quality and dynamically loading modules to reduce bundle size.
- [DRM-Protected Players](https://awesome-repositories.com/f/graphics-multimedia/video-production/video-players/drm-protected-players.md) — Secures premium content by providing a playback solution specialized for DRM-protected streams.

### Security & Cryptography

- [Digital Rights Management](https://awesome-repositories.com/f/security-cryptography/digital-rights-management.md) — Enforces encryption standards like Widevine and PlayReady to secure premium video content. ([source](https://matvp91.github.io/indigo-player/))
- [Media Decryption](https://awesome-repositories.com/f/security-cryptography/privacy-data-protection/data-encryption/end-to-end-encryption/media-encryption/media-decryption.md) — Implements browser-level decryption for protected media streams using Encrypted Media Extensions.

### Web Development

- [Plugin-Based Video Players](https://awesome-repositories.com/f/web-development/html5-media-players/plugin-based-video-players.md) — Ships a modular HTML5 video player supporting HLS, MPEG-DASH, and MP4 with extensible features for advertising and protection.

### Development Tools & Productivity

- [Dynamic Module Loading](https://awesome-repositories.com/f/development-tools-productivity/dynamic-module-loading.md) — Improves startup speed and performance by dynamically loading playback modules only when required. ([source](https://github.com/matvp91/indigo-player#readme))

### Software Engineering & Architecture

- [Modular Plugin Architectures](https://awesome-repositories.com/f/software-engineering-architecture/modular-plugin-architectures.md) — Extends core functionality through a plugin-based architecture that loads independent modules at runtime.

### User Interface & Experience

- [Event-Driven State Managers](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers.md) — Coordinates playback actions and UI updates through a centralized event-driven state management system.
- [Playback Controls](https://awesome-repositories.com/f/user-interface-experience/playback-controllers/playback-automation/playback-controls.md) — Offers configurable user interface controls for subtitles, quality selection, and thumbnail previews. ([source](https://github.com/matvp91/indigo-player#readme))
