Another option is to use video.onloadeddata
Example - https://playground.babylonjs.com/#EKFLA#310
I believe it will work a bit faster.
The order of events for the video element:
- loadstart
- durationchange
- loadedmetadata
- loadeddata
- progress
- canplay
- canplaythrough