@hevcjs/shaka-plugin
v0.2.2
Published
Shaka Player plugin for HEVC/H.265 playback — registers a Shaka Transmuxer that decodes HEVC streams via @hevcjs/core
Downloads
367
Maintainers
Readme
@hevcjs/shaka-plugin
HEVC/H.265 playback plugin for Shaka Player. Registers a custom Shaka Transmuxer that ingests HEVC fMP4 segments and emits H.264 fMP4 that any browser can play via MSE.
Tracks issue #101.
Install
npm install @hevcjs/shaka-plugin shaka-playerUsage
import shaka from 'shaka-player';
import { registerHevcTransmuxer } from '@hevcjs/shaka-plugin';
const cleanup = registerHevcTransmuxer(shaka, {
workerUrl: '/transcode-worker.js',
wasmUrl: '/hevc-decode.js',
});
const player = new shaka.Player();
await player.attach(document.querySelector('video'));
await player.load('https://example.com/stream/manifest.mpd');
// later: cleanup();How It Works
Shaka exposes a TransmuxerEngine that lets plugins convert one container/codec into another before MSE sees the bytes. This package follows the same pattern as Shaka's built-in AacTransmuxer:
registerHevcTransmuxer(shaka)callsshaka.transmuxer.TransmuxerEngine.registerTransmuxer()forvideo/mp4; codecs="hev1"andhvc1.- When Shaka encounters HEVC content it can't play natively, it instantiates
HevcTransmuxerand feeds it segments viatransmux(data, stream, reference, duration). - The transmuxer decodes HEVC via
@hevcjs/core(WASM) and re-encodes to H.264 via WebCodecs, returning an MSE-ready fMP4 segment.
Requirements
- Chrome 94+, Edge 94+, or Firefox with WebCodecs H.264 encoding support
- Secure Context (HTTPS or localhost)
- shaka-player >= 4.0.0
License
MIT
