Capítulo 336 de 988
You may want to implement custom controls for the <Player> component.
const MyVideo: React.FC = () => null;
const DownloadButton: React.FC<{
playerRef: React.RefObject<PlayerRef | null>;
}> = ({playerRef}) => {
const [frame, setFrame] = useState(0);
useEffect(() => {
const {current} = playerRef;
if (!current) return;
const onFrameUpdate = () => {
setFrame(current.getCurrentFrame());
};
current.addEventListener('frameupdate', onFrameUpdate);
return () => {
current.removeEventListener('frameupdate', onFrameUpdate);
};
}, [playerRef]);
return (
<button
type="button"
onClick={() => console.log('Download at frame', frame)}
style={{
background: 'transparent',
border: 'none',
color: 'white',
cursor: 'pointer',
}}
>
Download
</button>
);
};
export const App: React.FC = () => {
const playerRef = useRef<PlayerRef>(null);
const renderCustomControls: RenderCustomControls = useCallback(() => {
return <DownloadButton playerRef={playerRef} />;
}, []);
return (
<Player
ref={playerRef}
component={MyVideo}
durationInFrames={120}
compositionWidth={1920}
compositionHeight={1080}
fps={30}
controls
renderCustomControls={renderCustomControls}
/>
);
};