Changelog
Release history for Proper Video Player WebGL. The installed version appears in the Setup
window and is available at runtime through ProperVideoPlayer.Version.
1.0.0 current#
Initial release.
Playback#
- Added a native HTML
<video>backend for WebGL. Texture uploads userequestVideoFrameCallbackwhen available, with decoded-frame and continuous-upload fallbacks. The WebGL path usestexStorage2DandtexSubImage2Dwhen supported and remains compatible with WebGL 1. - Added native looping, single-operation seeking, automatic video-texture management, optional
RawImagebinding, and automatic WebGL UV orientation. - Added a
UnityEngine.Video.VideoPlayerbackend for the Editor, standalone players, and mobile builds behind the sameProperVideoPlayerAPI. - Added autoplay-policy handling that can begin playback muted and restore the requested mute state after playback starts.
- Added a configurable playback watchdog for unexpected pauses and stalled decoders. Recovery escalates
through replay, muted replay, pause-and-play, seek flush, and source reload, with stage identifiers reported
through
OnRecoveryAttempted. - Added independent multi-player support, including shared-
RenderTexturevalidation, pause-when-disabled behavior, and domain-reload-safe registries.
Streaming and authentication#
- Added HLS and DASH playback on WebGL with automatic
.m3u8and.mpddetection and explicitVideoSourceTypeselection for extensionless URLs. - Added native HLS on Safari and on-demand hls.js and dash.js integration over Media Source Extensions.
WebGLVideoBridge.ConfigureStreamingLibrariescan specify self-hosted library URLs. - Added streaming-aware watchdog reloads that rebuild HLS or DASH pipelines.
- Added custom request headers for WebGL HLS and DASH playlist, segment, and key requests. Header values can be updated during playback for token rotation; HLS with headers uses hls.js rather than Safari's native HLS path.
- Added credentialed CORS requests for cookie-protected sources through
SetUseCredentials. Query-string tokens require no additional configuration.SupportsRequestHeadersreports whether the active platform provides the custom-header path.
API and diagnostics#
- Added the public
WebGLVideoBridgefor integrations that require low-level control of the browser media element and texture-upload lifecycle. - Added metadata, readiness, buffering, seeking, playback, volume, rate, duration, resize, and error events.
Component events are exposed as
UnityEventproperties for Inspector and code subscriptions. - Added volume and playback-rate state, pitch preservation, network and ready state, fast seek, resolved source URL, codec capability probing, and buffered, seekable, and played time ranges.
- Added presented, decoded, and dropped-frame counters; buffered-ahead duration; presented-frame media time; texture-upload timing; and upload-path reporting. Unsupported fallback metrics use documented sentinel values.
- Added experimental Unity 6 WebGPU uploads through
copyExternalImageToTexture, including texture resize and rebind handling.UploadViaWebGpuidentifies the active path. This path was validated with Unity 6000.5 and Chrome. - Added
ProperVideoPlayer.Versionfor version reporting.
Editor and examples#
- Added a Setup window for installing and removing demo content, optional runtime/editor/UniTask assembly definitions, and UniTask support. The window opens once after the first import.
- Added a custom component Inspector with a collapsible event section.
- Added optional UniTask extensions:
OpenAsync,SeekAsync,WaitForEndAsync, andPlayToEndAsync. The core runtime remains independent of UniTask. - Added seven UGUI-compatible effect shaders: WaveRipple, Bulge, CRT, Glitch, Lens, RippleTouch, and
Spotlight. Interactive effects use the included
MouseFXDriver. - Added a tabbed demo scene covering transport controls and diagnostics, four simultaneous players, shader effects, video on 3D geometry, and token-authenticated sources.