hls-video
Lightweight HLS video element with minimal bundle size
The default HLS video element, optimized for minimal bundle size. HlsJsVideo is the larger, more compatible alternative.
Import
import { HlsVideo } from '@videojs/react/media/hls-video';import '@videojs/html/media/hls-video';Or load it from the CDN:
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/media/hls-video.js"></script>Examples
Basic Usage
import { HlsVideo } from '@videojs/react/media/hls-video';
export default function BasicUsage() {
return <HlsVideo className="hls-video" src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM.m3u8" autoPlay muted playsInline loop />;
}
.hls-video {
width: 100%;
aspect-ratio: 16 / 9;
}
<media-container class="media-container">
<hls-video src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM.m3u8" autoplay muted playsinline loop></hls-video>
</media-container>
.media-container {
position: relative;
display: block;
width: 100%;
aspect-ratio: 16 / 9;
}
import '@videojs/html/ui/container';
import '@videojs/html/media/hls-video';
API Reference
Attributes
Forwards these standard media attributes to the internal <video>. See the MDN media element reference: autopictureinpictureautoplaycontrolscontrolslistcrossorigindisablepictureinpicturedisableremoteplaybackloadingloopmutedplaysinlineposterpreloadsrc
These Video.js-specific attributes configure media behavior:
| Attribute | Type | Default | Details |
|---|---|---|---|
stream-type | MediaStreamType | "unknown" | |
| |||
Properties
| Property | Type | Default | Details |
|---|---|---|---|
alternativeMediaSuggestion | string | undefined | — | |
| |||
contentData | MediaContentData | undefined | — | |
| |||
disableRemotePlayback | boolean | false | |
engine | { state: StateSignals<HlsVideoEngineState>; context: ContextSignals<HlsVideoEngineContext>; destroy(): Promise<void> } | — | |
| |||
error | { data?: unknown } | null | — | |
| |||
isFullscreen | boolean | — | |
| |||
isPictureInPicture | boolean | — | |
| |||
liveEdgeStart | number | — | |
| |||
preload | '' | 'none' | 'metadata' | 'auto' | '' | |
| |||
src | string | '' | |
streamType | MediaStreamType | "unknown" | |
| |||
targetLiveWindow | number | — | |
| |||
webkitCurrentPlaybackTargetIsWireless | boolean | undefined | — | |
| |||
webkitPresentationMode | WebKitPresentationMode | undefined | — | |
| |||
webkitSetPresentationMode | ((mode: WebKitPresentationMode) => void) | undefined | — | |
| |||
Also exposes these properties from the native media API. See HTMLVideoElement for details: autoplaybufferedcontrolscrossOrigincurrentSrccurrentTimedefaultMuteddefaultPlaybackRatedisablePictureInPicturedurationendedloopmutedpausedplaybackRateplayedplaysInlineposterreadyStateremoteseekableseekingtextTrackstitlevideoHeightvideoWidthvolume
Methods
Supports these media methods. See HTMLVideoElement for details: addTextTrackcanPlayTypeexitFullscreenexitPictureInPictureloadpauseplayrequestFullscreenrequestPictureInPicture
Events
Re-dispatches these standard media events from the internal media element: abortaddtrackcanplaycanplaythroughchangecontentdatachangedurationchangeemptiedendedenterpictureinpictureleavepictureinpictureloadeddataloadedmetadataloadstartpauseplayplayingprogressratechangeremovetrackresizeseekedseekingstalledsuspendtimeupdatevolumechangewaiting
Also emits these Video.js-specific events:
| Event | Description |
|---|---|
error | Fired when a fatal condition is reported. Read `error` for it. |
streamtypechange | Fired when the detected stream type changes. Read `streamType` for the new value. |
targetlivewindowchange | Fired when the target live window changes. Read `targetLiveWindow` for the new value. |
CSS custom properties
| Variable | Details |
|---|---|
--media-video-border-radius | |
| |
--media-object-fit | |
| |
--media-object-position | |
| |
--media-caption-track-duration | |
| |
--media-caption-track-delay | |
| |
--media-caption-track-y | |
| |