# shaka-project/shaka-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/shaka-project-shaka-player).**

7,966 stars · 1,448 forks · JavaScript · apache-2.0

## Links

- GitHub: https://github.com/shaka-project/shaka-player
- Homepage: http://shaka-project.github.io/shaka-player/
- awesome-repositories: https://awesome-repositories.com/repository/shaka-project-shaka-player.md

## Topics

`dash` `drm` `encrypted-media` `hls` `javascript` `live` `live-streaming` `media-source-extension` `mse` `offline` `offline-capable` `offline-mode` `playback` `playback-controls` `video` `video-playback` `video-player` `video-player-library` `video-streaming` `vod`

## Description

Shaka Player is a JavaScript library for streaming adaptive bitrate video and audio using open web standards in browsers. It functions as a media player that handles Dynamic Adaptive Streaming over HTTP and HTTP Live Streaming manifests and segments.

The project includes a playback engine that integrates with Encrypted Media Extensions to authorize and unlock protected media streams. It further provides capabilities for downloading adaptive media and metadata to local storage for offline playback and rendering 360 and 180-degree video using specialized projections for virtual reality.

The library's broader surface covers digital rights management, custom manifest parsing, and the integration of client-side and server-side advertisements. Additional capabilities include rendering subtitles and captions, managing live stream availability, and steering content traffic based on manifest instructions.

## Tags

### Graphics & Multimedia

- [Adaptive Streaming Players](https://awesome-repositories.com/f/graphics-multimedia/media-players/adaptive-streaming-players.md) — Provides a media player specifically designed to support adaptive bitrate streaming for optimal quality switching. ([source](https://cdn.jsdelivr.net/gh/shaka-project/shaka-player@main/README.md))
- [Media Buffer Managers](https://awesome-repositories.com/f/graphics-multimedia/media-buffer-managers.md) — Manages the loading and clearing of media data buffers via the Media Source Extensions API.
- [DRM Integration](https://awesome-repositories.com/f/graphics-multimedia/video-production/video-players/drm-integration.md) — Integrates with Encrypted Media Extensions to authorize and decrypt protected media streams.
- [Live Stream Window Management](https://awesome-repositories.com/f/graphics-multimedia/live-stream-window-management.md) — Tracks a moving time window for live content to determine when segments are ready for download. ([source](https://shaka-project.github.io/shaka-player/docs/api/tutorial-manifest-parser.html))
- [Real-Time Transmuxing](https://awesome-repositories.com/f/graphics-multimedia/real-time-transmuxing.md) — Implements real-time conversion of transport stream segments into fragmented MP4 containers for browser compatibility.
- [Segment Indexing](https://awesome-repositories.com/f/graphics-multimedia/streaming-distribution/streaming-broadcasting/media-streaming/media-stream-segmenters/segment-indexing.md) — Organizes media references with timestamps and byte ranges to locate specific segments within a stream. ([source](https://shaka-project.github.io/shaka-player/docs/api/tutorial-manifest-parser.html))
- [VR Streaming](https://awesome-repositories.com/f/graphics-multimedia/streaming-distribution/streaming-broadcasting/media-streaming/vr-streaming.md) — Renders 360 or 180-degree video using equirectangular or cubemap projections for immersive viewing. ([source](https://cdn.jsdelivr.net/gh/shaka-project/shaka-player@main/README.md))

### Part of an Awesome List

- [Offline Playback Support](https://awesome-repositories.com/f/awesome-lists/media/video-playback/offline-playback-support.md) — Enables downloading adaptive media and metadata to local storage for playback without an active internet connection.
- [Spherical Video Playback](https://awesome-repositories.com/f/awesome-lists/media/360-media/spherical-video-playback.md) — Renders 360-degree spherical video content by transforming frames onto a spherical coordinate system.
- [Media Players](https://awesome-repositories.com/f/awesome-lists/media/media-players.md) — Adaptive media library supporting DASH and HLS streaming protocols.

### Content Management & Publishing

- [Offline Media Management](https://awesome-repositories.com/f/content-management-publishing/digital-reading-materials/offline-media-management.md) — Saves adaptive media and metadata to local storage to enable playback without an active network connection. ([source](https://shaka-project.github.io/shaka-player/docs/api/tutorial-offline.html))
- [Media Text Overlays](https://awesome-repositories.com/f/content-management-publishing/content-processing-transformation/document-processing-conversion/document-processing/rendering-visualization/dom-based-content-renderers/media-text-overlays.md) — Renders synchronized text overlays, including subtitles and captions, onto the video playback area. ([source](https://shaka-project.github.io/shaka-player/docs/api/shaka.extern.TextDisplayer.html))
- [Subtitle Rendering Layers](https://awesome-repositories.com/f/content-management-publishing/media-management/subtitle-management-systems/subtitle-rendering-layers.md) — Processes and displays captions in multiple timed-text formats for synchronized accessibility. ([source](https://cdn.jsdelivr.net/gh/shaka-project/shaka-player@main/README.md))
- [Video Ad Insertion](https://awesome-repositories.com/f/content-management-publishing/video-ad-insertion.md) — Integrates client-side and server-side advertisements into the media playback timeline using industry standard SDKs. ([source](https://cdn.jsdelivr.net/gh/shaka-project/shaka-player@main/README.md))

### Data & Databases

- [Media Asset Caching](https://awesome-repositories.com/f/data-databases/local-first-storage/media-asset-caching.md) — Redirects network requests to a local database to cache binary media assets for offline playback.

### Development Tools & Productivity

- [Media Manifest Parsing](https://awesome-repositories.com/f/development-tools-productivity/repository-manifest-parsing/media-manifest-parsing.md) — Converts proprietary media manifest formats into structured objects to enable playback and track switching.
- [Manifest Parsing Extensions](https://awesome-repositories.com/f/development-tools-productivity/repository-manifest-parsing/manifest-parsing-extensions.md) — Allows the addition of custom manifest format support by registering specialized parsing plugins. ([source](https://cdn.jsdelivr.net/gh/shaka-project/shaka-player@main/README.md))

### Security & Cryptography

- [Content Decryption Modules](https://awesome-repositories.com/f/security-cryptography/content-decryption-modules.md) — Integrates with Encrypted Media Extensions (EME) to authorize and unlock protected media streams. ([source](https://cdn.jsdelivr.net/gh/shaka-project/shaka-player@main/README.md))
- [External Key Integration](https://awesome-repositories.com/f/security-cryptography/cryptographic-key-management/external-key-integration.md) — Interfaces with external license servers and Encrypted Media Extensions to securely fetch and provide decryption keys.
- [Digital Rights Management](https://awesome-repositories.com/f/security-cryptography/digital-rights-management.md) — Handles encrypted media streams and manages DRM licenses to authorize and unlock protected content.
- [DRM Configuration](https://awesome-repositories.com/f/security-cryptography/privacy-data-protection/data-encryption/end-to-end-encryption/media-encryption/drm-configuration.md) — Allows specifying key IDs and DRM information to initialize encrypted media extensions for protected streams. ([source](https://shaka-project.github.io/shaka-player/docs/api/tutorial-manifest-parser.html))
- [DRM License Management](https://awesome-repositories.com/f/security-cryptography/identity-access-management/access-control/identity-role-management/identity-and-licensing-management/drm-license-management.md) — Controls whether encryption licenses are stored persistently for offline use or fetched during playback. ([source](https://shaka-project.github.io/shaka-player/docs/api/tutorial-offline.html))

### Networking & Communication

- [Stream Manifest Parsers](https://awesome-repositories.com/f/networking-communication/stream-manifest-parsers.md) — Provides a plugin-based registry of parsers to convert various streaming manifest formats into a unified representation.
- [Dynamic Manifest Refresh](https://awesome-repositories.com/f/networking-communication/stream-manifest-parsers/dynamic-manifest-refresh.md) — Provides a timer-based refresh mechanism to dynamically update live stream metadata and discover new media segments. ([source](https://shaka-project.github.io/shaka-player/docs/api/tutorial-manifest-parser.html))

### Software Engineering & Architecture

- [Polling Mechanisms](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/polling-mechanisms.md) — Uses a timer-based refresh mechanism to update live stream metadata and discover new media segments.
