Есть много способов сделать это с разными уровнями сложности. По моему опыту, проблема с видео заключается в том, что браузеры редко полностью загружают видео; они загружаются только до определенной точки, пока пользователь не увидит видео движений игровой головки.
Я заметил, что вы установили preload="none"
в своем видео; Я хотел бы рассмотреть вопрос об изменении этого на preload="auto"
.
Если у вас есть сетевое соединение, самый простой способ, который я могу придумать, - это проверить readyState
видео через определенные промежутки времени. Я пытался сделать это на событии loadeddata
с противоречивыми результатами, поэтому я не могу рекомендовать это.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState
Вы можете попробовать что-то вроде этого (желательно в системе или компоненте A-Frame):
// The video element
var video = document.querySelector('#vid');
// Define interval in milliseconds
var interval = 1000;
// Check readyState immediately
checkVidState();
// Function to detect if video has enough data to play
function checkVidState() {
if (video.readyState === 4) {
removeSplash();
return true;
}
// If readyState !== 4, check again at set interval
setTimeout(checkVidState, interval);
return false;
}
// Function for removing splash
function removeSplash() {
// Logic for removing splash here...
}
Если вам нужно сделать это для нескольких видео и не использовать компоненты A-Frame, вы можете определить функцию следующим образом:
function checkVidState( video, interval ) {
// Same inner code as above
}
Вам просто нужно передать элемент видео и значение интервала проверки.
Затем вызывайте их для каждого видеоэлемента или просматривайте их массив:
checkVideoState( video1, interval ); // or time in milleseconds
checkVideoState( video2, interval );
. . .