Mi sono imbattuto in questo stesso problema e dopo aver trascorso un po 'di tempo di giocarci, la soluzione migliore per me è stata semplicemente mettere in pausa il video una frazione di secondo prima della fine, mantenendolo così su quella cornice. Qualcosa di simile a questo:
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();
}
Dopo il video si avvia (che abbiamo di cattura utilizzando onStateChange), siamo in grado di ottenere la durata del video dalla API di YouTube Player (usando player.getDuration), e quindi utilizzare setInterval in tanto una funzione che mette in pausa il video 0,1 secondi (o qualsiasi valore scegliamo) prima della fine.
fonte
2015-01-23 01:26:59
Mi piace questa soluzione: se qualcuno sta guardando in bassa risoluzione, quella cornice finale potrebbe sembrare piuttosto sporca in pausa. Scambiare un tag 'img' ti consente di scegliere una miniatura di alta qualità. – andrewb