Media Player
VideoPlayer The main player component with default controls
The main player component that combines MediaProvider, PlayerProvider, PlayerContainer, ShakaVideo, and DefaultControls. This is the recommended entry point for most use cases.
import { VideoPlayer } from "@shelby-protocol/player" ;
function MyVideoPlayer () {
return (
< VideoPlayer
src = "https://example.com/video.m3u8"
poster = "https://example.com/poster.jpg"
title = "My Video"
/>
);
}
import { VideoPlayer } from "@shelby-protocol/player" ;
function MyVideoPlayer () {
return (
< VideoPlayer
src = "https://example.com/video.m3u8"
poster = "https://example.com/poster.jpg"
title = "My Video"
onPlay = {() => console. log ( "Playback started" )}
onPause = {() => console. log ( "Playback paused" )}
onTimeUpdate = {( e ) => console. log ( "Current time:" , e.currentTime)}
/>
);
}
import { VideoPlayer } from "@shelby-protocol/player" ;
function MyVideoPlayer () {
return (
< VideoPlayer
src = "https://example.com/video.m3u8"
poster = "https://example.com/poster.jpg"
title = "My Video"
config = {{
abr: {
enabled: true ,
defaultBandwidthEstimate: 2000000 ,
},
streaming: {
bufferingGoal: 30 ,
},
}}
/>
);
}
import { VideoPlayer } from "@shelby-protocol/player" ;
function MyVideoPlayer () {
return (
< VideoPlayer
src = "https://example.com/video.m3u8"
poster = "https://example.com/poster.jpg"
title = "My Video"
autoplay
/>
);
}
Note: Autoplay may be blocked by browser policies. The player will automatically mute when autoplay is enabled to comply with browser autoplay policies.
import { VideoPlayer } from "@shelby-protocol/player" ;
function MyVideoPlayer () {
const handleStateChange = ( state ) => {
console. log ( "Media state changed:" , state);
};
return (
< VideoPlayer
src = "https://example.com/video.m3u8"
poster = "https://example.com/poster.jpg"
title = "My Video"
onStateChange = {handleStateChange}
/>
);
}
Extends ShakaVideoProps and includes additional props:
defaultValue?array | number | string
suppressContentEditableWarning?boolean
suppressHydrationWarning?boolean
autoCapitalize?object & string | "characters" | "words" | "sentences" | "on" | "none" | "off"
contentEditable?"plaintext-only" | "inherit" | "false" | "true" | boolean
draggable?"false" | "true" | boolean
enterKeyHint?"send" | "search" | "previous" | "next" | "go" | "done" | "enter"
spellCheck?"false" | "true" | boolean
role?"treeitem" | "treegrid" | "tree" | "tooltip" | "toolbar" | "timer" | "textbox" | "term" | "tabpanel" | "tablist" | "table" | "tab" | "switch" | "status" | "spinbutton" | "slider" | "separator" | "searchbox" | "scrollbar" | "rowheader" | "rowgroup" | "row" | "region" | "radiogroup" | "radio" | "progressbar" | "presentation" | "option" | "note" | "navigation" | "menuitemradio" | "menuitemcheckbox" | "menuitem" | "menubar" | "menu" | "math" | "marquee" | "main" | "log" | "listitem" | "listbox" | "list" | "link" | "img" | "heading" | "group" | "gridcell" | "grid" | "form" | "figure" | "feed" | "document" | "directory" | "dialog" | "definition" | "contentinfo" | "complementary" | "combobox" | "columnheader" | "checkbox" | "cell" | "button" | "banner" | "article" | "application" | "alertdialog" | "alert" | "search" | object & string | "none"
unselectable?"on" | "off"
popover?"hint" | "manual" | "auto" | ""
popoverTargetAction?"hide" | "show" | "toggle"
inputMode?"decimal" | "numeric" | "email" | "tel" | "text" | "search" | "none" | "url"
aria-activedescendant?string
aria-atomic?"false" | "true" | boolean
aria-autocomplete?"both" | "inline" | "list" | "none"
aria-brailleroledescription?string
aria-busy?"false" | "true" | boolean
aria-checked?"mixed" | "false" | "true" | boolean
aria-current?"time" | "date" | "location" | "step" | "page" | "false" | "true" | boolean
aria-disabled?"false" | "true" | boolean
aria-dropeffect?"popup" | "move" | "execute" | "copy" | "link" | "none"
aria-expanded?"false" | "true" | boolean
aria-grabbed?"false" | "true" | boolean
aria-haspopup?"tree" | "menu" | "listbox" | "grid" | "dialog" | "false" | "true" | boolean
aria-hidden?"false" | "true" | boolean
aria-invalid?"spelling" | "grammar" | "false" | "true" | boolean
aria-live?"polite" | "assertive" | "off"
aria-modal?"false" | "true" | boolean
aria-multiline?"false" | "true" | boolean
aria-multiselectable?"false" | "true" | boolean
aria-orientation?"vertical" | "horizontal"
aria-pressed?"mixed" | "false" | "true" | boolean
aria-readonly?"false" | "true" | boolean
aria-relevant?"text removals" | "text additions" | "removals text" | "removals additions" | "removals" | "all" | "additions text" | "additions removals" | "additions" | "text"
aria-required?"false" | "true" | boolean
aria-roledescription?string
aria-selected?"false" | "true" | boolean
aria-sort?"other" | "descending" | "ascending" | "none"
dangerouslySetInnerHTML?object
onCopy?ClipboardEventHandler < object >
onCopyCapture?ClipboardEventHandler < object >
onCut?ClipboardEventHandler < object >
onCutCapture?ClipboardEventHandler < object >
onPaste?ClipboardEventHandler < object >
onPasteCapture?ClipboardEventHandler < object >
onCompositionEnd?CompositionEventHandler < object >
onCompositionEndCapture?CompositionEventHandler < object >
onCompositionStart?CompositionEventHandler < object >
onCompositionStartCapture?CompositionEventHandler < object >
onCompositionUpdate?CompositionEventHandler < object >
onCompositionUpdateCapture?CompositionEventHandler < object >
onFocus?FocusEventHandler < object >
onFocusCapture?FocusEventHandler < object >
onBlur?FocusEventHandler < object >
onBlurCapture?FocusEventHandler < object >
onChange?FormEventHandler < object >
onChangeCapture?FormEventHandler < object >
onBeforeInput?InputEventHandler < object >
onBeforeInputCapture?FormEventHandler < object >
onInput?FormEventHandler < object >
onInputCapture?FormEventHandler < object >
onReset?FormEventHandler < object >
onResetCapture?FormEventHandler < object >
onSubmit?FormEventHandler < object >
onSubmitCapture?FormEventHandler < object >
onInvalid?FormEventHandler < object >
onInvalidCapture?FormEventHandler < object >
onLoad?ReactEventHandler < object >
onLoadCapture?ReactEventHandler < object >
onError?ReactEventHandler < object >
onErrorCapture?ReactEventHandler < object >
onKeyDown?KeyboardEventHandler < object >
onKeyDownCapture?KeyboardEventHandler < object >
onKeyPress?KeyboardEventHandler < object >
onKeyPressCapture?KeyboardEventHandler < object >
onKeyUp?KeyboardEventHandler < object >
onKeyUpCapture?KeyboardEventHandler < object >
onAbort?ReactEventHandler < object >
onAbortCapture?ReactEventHandler < object >
onCanPlay?ReactEventHandler < object >
onCanPlayCapture?ReactEventHandler < object >
onCanPlayThrough?ReactEventHandler < object >
onCanPlayThroughCapture?ReactEventHandler < object >
onDurationChange?ReactEventHandler < object >
onDurationChangeCapture?ReactEventHandler < object >
onEmptied?ReactEventHandler < object >
onEmptiedCapture?ReactEventHandler < object >
onEncrypted?ReactEventHandler < object >
onEncryptedCapture?ReactEventHandler < object >
onEnded?ReactEventHandler < object >
onEndedCapture?ReactEventHandler < object >
onLoadedData?ReactEventHandler < object >
onLoadedDataCapture?ReactEventHandler < object >
onLoadedMetadata?ReactEventHandler < object >
onLoadedMetadataCapture?ReactEventHandler < object >
onLoadStart?ReactEventHandler < object >
onLoadStartCapture?ReactEventHandler < object >
onPause?ReactEventHandler < object >
onPauseCapture?ReactEventHandler < object >
onPlay?ReactEventHandler < object >
onPlayCapture?ReactEventHandler < object >
onPlaying?ReactEventHandler < object >
onPlayingCapture?ReactEventHandler < object >
onProgress?ReactEventHandler < object >
onProgressCapture?ReactEventHandler < object >
onRateChange?ReactEventHandler < object >
onRateChangeCapture?ReactEventHandler < object >
onSeeked?ReactEventHandler < object >
onSeekedCapture?ReactEventHandler < object >
onSeeking?ReactEventHandler < object >
onSeekingCapture?ReactEventHandler < object >
onStalled?ReactEventHandler < object >
onStalledCapture?ReactEventHandler < object >
onSuspend?ReactEventHandler < object >
onSuspendCapture?ReactEventHandler < object >
onTimeUpdate?ReactEventHandler < object >
onTimeUpdateCapture?ReactEventHandler < object >
onVolumeChange?ReactEventHandler < object >
onVolumeChangeCapture?ReactEventHandler < object >
onWaiting?ReactEventHandler < object >
onWaitingCapture?ReactEventHandler < object >
onAuxClick?MouseEventHandler < object >
onAuxClickCapture?MouseEventHandler < object >
onClick?MouseEventHandler < object >
onClickCapture?MouseEventHandler < object >
onContextMenu?MouseEventHandler < object >
onContextMenuCapture?MouseEventHandler < object >
onDoubleClick?MouseEventHandler < object >
onDoubleClickCapture?MouseEventHandler < object >
onDrag?DragEventHandler < object >
onDragCapture?DragEventHandler < object >
onDragEnd?DragEventHandler < object >
onDragEndCapture?DragEventHandler < object >
onDragEnter?DragEventHandler < object >
onDragEnterCapture?DragEventHandler < object >
onDragExit?DragEventHandler < object >
onDragExitCapture?DragEventHandler < object >
onDragLeave?DragEventHandler < object >
onDragLeaveCapture?DragEventHandler < object >
onDragOver?DragEventHandler < object >
onDragOverCapture?DragEventHandler < object >
onDragStart?DragEventHandler < object >
onDragStartCapture?DragEventHandler < object >
onDrop?DragEventHandler < object >
onDropCapture?DragEventHandler < object >
onMouseDown?MouseEventHandler < object >
onMouseDownCapture?MouseEventHandler < object >
onMouseEnter?MouseEventHandler < object >
onMouseLeave?MouseEventHandler < object >
onMouseMove?MouseEventHandler < object >
onMouseMoveCapture?MouseEventHandler < object >
onMouseOut?MouseEventHandler < object >
onMouseOutCapture?MouseEventHandler < object >
onMouseOver?MouseEventHandler < object >
onMouseOverCapture?MouseEventHandler < object >
onMouseUp?MouseEventHandler < object >
onMouseUpCapture?MouseEventHandler < object >
onSelect?ReactEventHandler < object >
onSelectCapture?ReactEventHandler < object >
onTouchCancel?TouchEventHandler < object >
onTouchCancelCapture?TouchEventHandler < object >
onTouchEnd?TouchEventHandler < object >
onTouchEndCapture?TouchEventHandler < object >
onTouchMove?TouchEventHandler < object >
onTouchMoveCapture?TouchEventHandler < object >
onTouchStart?TouchEventHandler < object >
onTouchStartCapture?TouchEventHandler < object >
onPointerDown?PointerEventHandler < object >
onPointerDownCapture?PointerEventHandler < object >
onPointerMove?PointerEventHandler < object >
onPointerMoveCapture?PointerEventHandler < object >
onPointerUp?PointerEventHandler < object >
onPointerUpCapture?PointerEventHandler < object >
onPointerCancel?PointerEventHandler < object >
onPointerCancelCapture?PointerEventHandler < object >
onPointerEnter?PointerEventHandler < object >
onPointerLeave?PointerEventHandler < object >
onPointerOver?PointerEventHandler < object >
onPointerOverCapture?PointerEventHandler < object >
onPointerOut?PointerEventHandler < object >
onPointerOutCapture?PointerEventHandler < object >
onGotPointerCapture?PointerEventHandler < object >
onGotPointerCaptureCapture?PointerEventHandler < object >
onLostPointerCapture?PointerEventHandler < object >
onLostPointerCaptureCapture?PointerEventHandler < object >
onScroll?UIEventHandler < object >
onScrollCapture?UIEventHandler < object >
onScrollEnd?UIEventHandler < object >
onScrollEndCapture?UIEventHandler < object >
onWheel?WheelEventHandler < object >
onWheelCapture?WheelEventHandler < object >
onAnimationStart?AnimationEventHandler < object >
onAnimationStartCapture?AnimationEventHandler < object >
onAnimationEnd?AnimationEventHandler < object >
onAnimationEndCapture?AnimationEventHandler < object >
onAnimationIteration?AnimationEventHandler < object >
onAnimationIterationCapture?AnimationEventHandler < object >
onToggle?ToggleEventHandler < object >
onBeforeToggle?ToggleEventHandler < object >
onTransitionCancel?TransitionEventHandler < object >
onTransitionCancelCapture?TransitionEventHandler < object >
onTransitionEnd?TransitionEventHandler < object >
onTransitionEndCapture?TransitionEventHandler < object >
onTransitionRun?TransitionEventHandler < object >
onTransitionRunCapture?TransitionEventHandler < object >
onTransitionStart?TransitionEventHandler < object >
onTransitionStartCapture?TransitionEventHandler < object >
disablePictureInPicture?boolean
onenterpictureinpicture?function | null
onleavepictureinpicture?function | null
cancelVideoFrameCallback?function
getVideoPlaybackQuality?function
requestPictureInPicture?function
requestVideoFrameCallback?function
crossOrigin?string | null
defaultPlaybackRate?number
disableRemotePlayback?boolean
onencrypted?function | null
onwaitingforkey?function | null
preload?"metadata" | "auto" | "none" | ""
ref?object | function | null
key?bigint | number | string | null