Я столкнулся с той же проблемой, и, потратив кучу времени на игру с ней, лучшим решением для меня было просто приостановить видео за долю секунды до конца, таким образом сохранив его на этом кадре. Что-то вроде этого:
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
playerVars: { 'autoplay': 1, 'controls': 0,'loop': 1, 'showinfo': 0, 'disablekb': 1, 'version': 3, 'vq': 'large', 'wmode':'opaque','rel': 0 },
videoId: 'YOURVIDEOID',
events: {
'onReady': onPlayerReady,
'onStateChange': onStateChange,
'onytplayerStateChange': onStateChange }
});
}
var done = false;
function onStateChange(event){
var videoDuration = player.getDuration();
if (event.data == YT.PlayerState.PLAYING && !done) {
// pause 0.1 seconds before the end
setTimeout(pauseVideo, (videoDuration-0.1)*1000);
done = true;
}
}
function pauseVideo() {
player.pauseVideo();
}
После запуска видео (которое мы фиксируем с помощью onStateChange), мы можем получить продолжительность видео из API проигрывателя YouTube (используя player.getDuration), а затем использовать setInterval для определения времени функции, которая приостанавливает видео на 0,1 секунды (или любое другое значение, которое мы выберем). ) до конца.
person
David R.
schedule
23.01.2015