'Custom HTML5 video seekbar not working as video progress
I am using react with typescript. I using html5 element range for seek bar. I created two events on the seek bar one is onChange and the second one is onTimeUpdate. The seek bar is working fine when I manually drag it but it does not change when the video is progressing.
here is my code:
const VideoPlayer = () => {
const seekbarRef = useRef(null);
const vRef= useRef(null);
const updateSeekbar = () => {
let videoReference = vRef.current;
let seekbarReference = seekbarRef.current;
if(seekbarReference && videoReference){
let seekbarMax: number = seekbarReference.max as unknown as number;
let seekbarDuration: number = videoReference.duration;
let seekbarCurrentTime: number = videoReference.currentTime;
let seekbarValue: number = (seekbarMax / seekbarDuration) * seekbarCurrentTime;
seekbarReference.value = seekbarValue as unknown as string;
}
}
const updateDuration = () => {
let videoReference = vRef.current;
let seekbarReference = seekbarRef.current;
if(seekbarReference && videoReference){
let seekbarMax: number = seekbarReference.max as unknown as number;
let videoDuration: number = videoReference.duration;
let seekbarValue: number = seekbarReference.value as unknown as number;
let videoCurrentTime: number = videoDuration * (seekbarValue / seekbarMax);
videoReference.currentTime = videoCurrentTime;
}
}
return <div>
<video className='video' ref={vRef} autoPlay muted>
<source src='https://www.w3schools.com/html/movie.mp4' />
</video>
<input className='seekbar' type='range' min='0' max='100' onChange={updateDuration} onTimeUpdate={updateSeekbar} ref={seekbarRef}></input>
</div>
};
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
