Я знаю, что этот вопрос устарел, но для некоторых он все еще может помочь:
Видео YouTube может находиться в одном из 6 состояний:
- -1 - не начато
- 0 - закончено
- 1 - воспроизведение
- 2 - приостановлено
- 3 - буферизация
- 5 - просмотр видео
Когда это состояние изменяется (то есть когда видео прекращает буферизацию и входит в состояние «приостановлено» или «воспроизводится»), запускается событие «onStateChange».Итак, следите за предыдущим состоянием и новым состоянием.Если предыдущее состояние «буферизация», а новое состояние «завершено», «воспроизводится» или «приостановлено», это означает, что видео завершило буферизацию.
Вот пример:
<html>
<body>
<div id="player"></div>
<script>
var player;
var lastState;
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: {
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerStateChange(event) {
if (lastState == YT.PlayerState.BUFFERING &&
(event.data == YT.PlayerState.PLAYING || event.data == YT.PlayerState.PAUSED)) {
alert('Buffering has completed!');
}
lastState = event.data;
}
</script>
</body>
</html>