# phoboslab/jsmpeg

**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/phoboslab-jsmpeg).**

6,498 stars · 1,417 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/phoboslab/jsmpeg
- awesome-repositories: https://awesome-repositories.com/repository/phoboslab-jsmpeg.md

## Description

jsmpeg is a JavaScript MPEG1 video decoder and canvas-based video renderer. It functions as a client-side media decoder that processes video frames in JavaScript, rendering them to an HTML5 canvas without relying on native browser video elements.

The project provides a low-latency video player capable of receiving binary media data over WebSockets for real-time streaming. It also supports the progressive loading of static video files via Ajax to allow playback to begin before a file is fully downloaded.

The system includes capabilities for playback state and event management, allowing for the control of volume, seeking, and the triggering of callbacks during playback transitions. It also features configurable video rendering backends to manage the visual appearance and playback behavior of the media.

## Tags

### Graphics & Multimedia

- [MPEG1 Software Decoders](https://awesome-repositories.com/f/graphics-multimedia/mpeg1-software-decoders.md) — Implements a custom software MPEG1 video decoder written entirely in JavaScript to translate bitstreams into raw pixel data.
- [Low-Latency Video Streaming](https://awesome-repositories.com/f/graphics-multimedia/low-latency-video-streaming.md) — Delivers real-time video feeds via WebSockets with minimal end-to-end delay between the server and client. ([source](https://github.com/phoboslab/jsmpeg#readme))
- [Low Latency Players](https://awesome-repositories.com/f/graphics-multimedia/media-players/adaptive-streaming-players/low-latency-players.md) — Implements a low-latency video player optimized for real-time binary data delivery over WebSockets.
- [Media Decoders](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-decoders.md) — Provides a high-performance decoding system that interprets and renders MPEG media streams from static files or live feeds. ([source](https://github.com/phoboslab/jsmpeg/blob/master/README.md))
- [MPEG1 Playback Engines](https://awesome-repositories.com/f/graphics-multimedia/mpeg1-playback-engines.md) — Provides a complete system for decoding and rendering MPEG1 video and audio files directly within a web browser.
- [Software Media Decoders](https://awesome-repositories.com/f/graphics-multimedia/video-encoding-and-decoding/software-based-video-encoders/software-media-decoders.md) — Provides a software-based media decoder that processes raw streams and static files without relying on native browser video elements.
- [Canvas Frame Renderers](https://awesome-repositories.com/f/graphics-multimedia/video-frame-capture/canvas-frame-renderers.md) — Decodes video tracks and renders each frame directly onto an HTML5 canvas element for display.
- [Video Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/scene-renderers/high-quality-scene-rendering/high-dynamic-range-rendering/video-renderers.md) — Implements a video rendering pipeline that transforms MPEG1 media containers into visual output using configurable graphics backends. ([source](https://github.com/phoboslab/jsmpeg#readme))
- [Playback Session Management](https://awesome-repositories.com/f/graphics-multimedia/media-playback-controls/playback-session-management.md) — Manages the lifecycle and state of video playback sessions, including controls for seeking, stopping, and volume adjustment. ([source](https://github.com/phoboslab/jsmpeg#readme))
- [Multi-Backend Renderers](https://awesome-repositories.com/f/graphics-multimedia/multi-backend-renderers.md) — Provides a rendering system capable of switching between different output technologies to decouple decoder logic from the display layer.
- [Remote Media Loading](https://awesome-repositories.com/f/graphics-multimedia/remote-media-loading.md) — Uses asynchronous fetching to load static video files from web URLs, enabling early playback via Ajax. ([source](https://github.com/phoboslab/jsmpeg#readme))

### Data & Databases

- [MPEG1 Video Decoders](https://awesome-repositories.com/f/data-databases/schema-agnostic-ingestion/format-agnostic-parsers/video-frame-decoders/mpeg1-video-decoders.md) — Provides a JavaScript library specifically for decoding MPEG1 video and audio streams for canvas rendering.

### Web Development

- [Client-Side Media Processing](https://awesome-repositories.com/f/web-development/client-side-media-processing.md) — Implements a browser-based decoder that processes video frames in JavaScript, avoiding reliance on native HTML5 video elements.
- [Binary WebSocket Protocols](https://awesome-repositories.com/f/web-development/websockets/rpc-over-websocket/binary-websocket-protocols.md) — Uses binary WebSocket protocols to transmit real-time video data with minimal playback latency.

### User Interface & Experience

- [Progressive Media Loading](https://awesome-repositories.com/f/user-interface-experience/loading-progress-bars/progressive-media-loading.md) — Implements progressive loading of static video files via Ajax to allow playback to begin before the full download completes.
