How to manually update Video Texture?

I have a material which should have a video playing on it and the video must be controlled (able to change current time).

Initially, I used VideoTexture and it works fine as long as the video is uncontrolled. I simply call video.play() and the video starts playing on the material. However, when continuously setting the currentTime manually problems arise. The video doesn’t seek instantly, and continuously changing currentTime causes it to seek without displaying any new frames. This is a problem with html5 video and not three.js.

Is there a more efficient way of achieving my desired result?