@mediafox/react
Version:
React hooks for MediaFox media player
68 lines • 2.8 kB
TypeScript
import type { LoadOptions, MediaFox, MediaSource, PlayerEventListener, PlayerOptions, PlayerStateData, RendererType, ScreenshotOptions, SeekOptions } from '@mediafox/core';
export interface UseMediaFoxOptions extends PlayerOptions {
onLoadStart?: PlayerEventListener<'loadstart'>;
onLoadedMetadata?: PlayerEventListener<'loadedmetadata'>;
onLoadedData?: PlayerEventListener<'loadeddata'>;
onCanPlay?: PlayerEventListener<'canplay'>;
onCanPlayThrough?: PlayerEventListener<'canplaythrough'>;
onPlay?: PlayerEventListener<'play'>;
onPause?: PlayerEventListener<'pause'>;
onPlaying?: PlayerEventListener<'playing'>;
onEnded?: PlayerEventListener<'ended'>;
onTimeUpdate?: PlayerEventListener<'timeupdate'>;
onDurationChange?: PlayerEventListener<'durationchange'>;
onVolumeChange?: PlayerEventListener<'volumechange'>;
onRateChange?: PlayerEventListener<'ratechange'>;
onSeeking?: PlayerEventListener<'seeking'>;
onSeeked?: PlayerEventListener<'seeked'>;
onWaiting?: PlayerEventListener<'waiting'>;
onProgress?: PlayerEventListener<'progress'>;
onError?: PlayerEventListener<'error'>;
onWarning?: PlayerEventListener<'warning'>;
onTrackChange?: PlayerEventListener<'trackchange'>;
onStateChange?: PlayerEventListener<'statechange'>;
onRendererChange?: PlayerEventListener<'rendererchange'>;
onRendererFallback?: PlayerEventListener<'rendererfallback'>;
}
export interface UseMediaFoxReturn {
player: MediaFox | null;
state: PlayerStateData | null;
load: (source: MediaSource, options?: LoadOptions) => Promise<void>;
play: () => Promise<void>;
pause: () => void;
seek: (time: number, options?: SeekOptions) => Promise<void>;
stop: () => Promise<void>;
screenshot: (options?: ScreenshotOptions) => Promise<Blob | null>;
setRenderTarget: (canvas: HTMLCanvasElement | OffscreenCanvas) => Promise<void>;
switchRenderer: (type: RendererType) => Promise<void>;
rendererType: RendererType | null;
}
/**
* React hook for MediaFox media player.
* Creates and manages a MediaFox instance with automatic cleanup.
*
* @example
* ```tsx
* function VideoPlayer() {
* const canvasRef = useRef<HTMLCanvasElement>(null);
* const { player, state, play, pause, load } = useMediaFox({
* renderTarget: canvasRef.current,
* onError: (error) => console.error(error)
* });
*
* useEffect(() => {
* load('/video.mp4');
* }, [load]);
*
* return (
* <div>
* <canvas ref={canvasRef} />
* <button onClick={play}>Play</button>
* <button onClick={pause}>Pause</button>
* </div>
* );
* }
* ```
*/
export declare function useMediaFox(options?: UseMediaFoxOptions): UseMediaFoxReturn;
//# sourceMappingURL=useMediaFox.d.ts.map