Runtime Contract
- Execution environment: modern browsers on desktop and mobile (Chrome, Firefox, Safari, Edge).
- Required runtime capabilities vary by decode strategy: WASM (broadest support), MSE, WebCodecs (requires HTTPS/localhost), WASM SIMD, and multi-threaded.
- Autoplay requires muted state — call
cancelMute() after a user interaction to enable audio. - Fullscreen behavior depends on browser policies; use
web fullscreen mode as fallback on mobile. - WebCodecs H.265 decoding requires HTTPS or localhost context.
- Microphone access (for voice communication) requires HTTPS or localhost.
Quick Start
<script src="jessibuca-pro.js"></script>
<div id="container" style="width:640px;height:360px;"></div>
<script>
var player = new JessibucaPro({
container: document.getElementById('container'),
videoBuffer: 0.2,
decoder: 'decoder-pro.js',
useMSE: true,
loadingText: 'Loading',
showBandwidth: true,
operateBtns: {
fullscreen: true,
screenshot: true,
play: true,
audio: true,
},
});
player.play('your-stream-url');
player.on('play', () => console.log('Playing'));
player.on('error', (type, msg) => console.error(type, msg));
</script>
Core Constructor Options
| Option | Type | Description |
container | HTMLElement | string | Player mount container element or element ID. |
videoBuffer | number | Max buffer duration (seconds). Player auto-eliminates latency. |
videoBufferDelay | number | Max delay before frame dropping (seconds). |
decoder | string | Decoder worker path. .js and .wasm must be co-located. |
useMSE | boolean | Enable MediaSource Extensions decoding. |
useWCS | boolean | Enable WebCodecs decoding. |
useSIMD | boolean | Enable WASM SIMD decoding. |
useMThreading | boolean | Enable multi-threaded decoding. |
isResize | boolean | Scale proportionally with black bars (mode 1). |
isFullResize | boolean | Scale proportionally, fill container, crop overflow (mode 2). |
isFlv / isNakedFlow / isFmp4 / isMpeg4 | boolean | Force specific stream format parsing. |
hasAudio / hasVideo | boolean | Toggle audio/video decoding. Disable audio for performance. |
debug / debugLevel | boolean / string | Console logging: 'warn' or 'debug'. |
timeout | number | Timeout for loading and heartbeat (seconds). |
rotate | number | Rotation: 0, 90, 180, or 270 degrees. |
mirrorRotate | string | Mirror: 'none', 'level', 'vertical'. |
operateBtns | object | Control button visibility (fullscreen, screenshot, play, audio, ptz, quality, performance). |
useCanvasRender | boolean | Use canvas element instead of video element. |
useWebGPU | boolean | Use WebGPU for canvas rendering. |
demuxUseWorker | boolean | Use worker for hardware decoding demuxing. |
Core Methods
| Method | Description |
play(url) | Start playback for a stream URL. |
pause() | Pause current playback. |
close() | Close the connection. |
destroy() | Release all resources and detach the player. Returns a Promise. |
screenshot(filename, format, quality) | Capture a screenshot of the current frame. |
setVolume(volume) | Set audio volume (0–1). |
setFullscreen(flag) | Toggle fullscreen mode. |
setScaleMode(mode) | Scale mode: 0=stretch, 1=fit, 2=fill. |
setRotate(deg) | Set rotation angle. |
setMirrorRotate(type) | Set mirror flip direction. |
setZoomRect(rect) | Set electronic zoom area. |
clearZoomRect() | Clear electronic zoom. |
showErrorMessageTips(msg) | Display an error message overlay on the player. |
Events
| Event | Description |
load | Player loaded. |
play / pause | Playback started / paused. |
timeUpdate | Time update during playback. |
videoInfo / audioInfo | Media information available. |
error | Error occurred (params: errorType, message). |
timeout / loadingTimeout / delayTimeout | Timeout events (heartbeat, loading, delay). |
stats | Statistics update (fps, dfps, etc.). |
performance | Performance metrics update. |
kBps | Bandwidth update. |
ptz | PTZ direction event. |
streamQualityChange | Stream quality level changed. |
zooming | Zoom level changed. |
recordStart / recordEnd / recordBlob | Recording lifecycle events. |
videoSEI | SEI metadata received. |
crashLog | Crash/exception telemetry. |
playFailedAndPaused | Playback failed and auto-paused. |
streamEnd | Stream ended. |
fullscreen / webFullscreen | Fullscreen state changed. |
visibilityChange / focus / blur | Page visibility and focus events. |
Listen to events via: player.on(JessibucaPro.EVENTS.error, (type, msg) => { ... })
Error Types
The error event provides an error type constant from JessibucaPro.ERROR:
playError — play called with empty URL fetchError — HTTP request failed websocketError — WebSocket failed webcodecsH265NotSupport — WebCodecs H.265 not supported webcodecsDecodeError — WebCodecs decode failure mediaSourceH265NotSupport — MSE H.265 not supported mediaSourceFull — MSE buffer full wasmDecodeError — WASM decode failure hlsError — HLS error webrtcError — WebRTC error webglAlignmentError — WebGL alignment error videoElementPlayingFailed — Video element play failed