@mediafox/react
v1.2.10
Published
React hooks for MediaFox media player
Maintainers
Readme
@mediafox/react
React hooks for MediaFox Media Player.
Installation
npm install @mediafox/react @mediafox/core
# or
bun add @mediafox/react @mediafox/core
# or
yarn add @mediafox/react @mediafox/coreUsage
Basic Example
import { useRef, useEffect } from 'react';
import { useMediaFox } from '@mediafox/react';
function VideoPlayer() {
const canvasRef = useRef<HTMLCanvasElement>(null);
const { state, play, pause, load } = useMediaFox({
renderTarget: canvasRef.current,
onError: (error) => console.error('Player error:', error),
});
useEffect(() => {
load('/path/to/video.mp4');
}, [load]);
return (
<div>
<canvas ref={canvasRef} />
<div>
<button onClick={play} disabled={!state?.canPlay}>
Play
</button>
<button onClick={pause}>Pause</button>
<p>
{state?.currentTime.toFixed(2)}s / {state?.duration.toFixed(2)}s
</p>
</div>
</div>
);
}With Event Handlers
import { useMediaFox } from '@mediafox/react';
function VideoPlayer() {
const canvasRef = useRef<HTMLCanvasElement>(null);
const { state, play, pause, seek, load } = useMediaFox({
renderTarget: canvasRef.current,
volume: 0.8,
onPlay: () => console.log('Playing'),
onPause: () => console.log('Paused'),
onEnded: () => console.log('Ended'),
onTimeUpdate: ({ currentTime }) => console.log('Time:', currentTime),
});
// ... rest of component
}API
useMediaFox(options?)
Returns an object with:
player- The MediaFox instance (or null if not initialized)state- Current player state (reactive)load(source, options?)- Load a media sourceplay()- Start playbackpause()- Pause playbackseek(time, options?)- Seek to time in secondsstop()- Stop playback and reset to startscreenshot(options?)- Capture current framesetRenderTarget(canvas)- Update render target
Options
All PlayerOptions from @mediafox/core plus event handlers:
onLoadStart,onLoadedMetadata,onLoadedDataonCanPlay,onCanPlayThroughonPlay,onPause,onPlaying,onEndedonTimeUpdate,onDurationChangeonVolumeChange,onRateChangeonSeeking,onSeeked,onWaitingonProgress,onError,onWarningonTrackChange,onStateChange
Features
- ✅ Automatic cleanup on unmount
- ✅ Optimized with
useSyncExternalStorefor React 18+ - ✅ SSR safe (lazy loads MediaFox)
- ✅ Fully typed with TypeScript
- ✅ Framework-agnostic core
License
MIT
