Languages: English · 简体中文 · 日本語 · 한국어 · Español · Deutsch · Français
Experimental HTTP-FLV player SDK: H.264 and H.265 (HEVC) video, AAC audio. Custom FLV demuxer (including legacy H.265, Enhanced RTMP, etc.), WebCodecs output to Canvas / Web Audio; optional self-built FFmpeg WASM + WebGL for H.264 soft-decode only (see wasm/PACKAGING.md). Prebuilt shell.js / shell.wasm are not shipped in this repo (H.265 is played via WebCodecs in the demo to limit patent/licensing surface). @live-player/core is not published to the npm registry. This repo is a pnpm workspace and uses Vite+ (vp) as the toolchain.
https://flv-live-player.vercel.app/ (from apps/website)
- HTTP-FLV pull, custom demux, H.264 / H.265 on one pipeline
- Video
decodeMode:auto(WebCodecs ↔ WASM after first frame when WASM is present) |webcodecs|wasm(requires locally built assets under the host’spublic/wasm/or a customwasmScriptUrl; not bundled here) - Audio: WebCodecs
AudioDecoder+ Web Audio videoCodecHint(auto/avc/hevc),probeHttpFlv(read stream header only, no decode)apps/website: React + Tailwind v4 + shadcn/ui demo, imports@live-player/coresource directly
There is no npm package: @live-player/core is not published. Use this monorepo as a workspace, pnpm link, a Git URL, or vendor packages/core in your own repo.
import { LivePlayer } from "@live-player/core";
const player = new LivePlayer({ container: document.getElementById("player-root")! });
await player.play("https://example.com/live.flv");For full examples (probing, callbacks, stop, etc.) see docs/using-live-player.md.
Layers: apps/website → @live-player/core; if you build WASM yourself, copy wasm/ output into the host app’s public/wasm/ (or set wasmScriptUrl). Nothing under public/wasm/ is committed as a distributable binary here.
Pipeline: HTTP streaming → FlvDemuxer → video WebCodecs or WASM, audio WebCodecs → Canvas / Web Audio. Design notes and H.265 FLV details: docs/architecture-demux-decoders.md, docs/superpowers/specs/2026-04-10-hevc-flv-dual-format-design.md.
HTTP → FLV demux (H.264 / H.265 + AAC)
↓
Video: WebCodecs or WASM Audio: AudioDecoder
↓ ↓
Canvas / WebGL Web Audio
Run RTMP → HTTP-FLV locally (e.g. Monibuca, SRS) and point the stream at something like the demo default http://localhost:8080/flv/live/test. If you have a local push-command/ folder (may be gitignored), follow its README to push with ffmpeg to rtmp://127.0.0.1:1935/live/test.
Per-package license in package.json (@live-player/core is MIT).