मैं इस समस्या में भाग गया और एक गुच्छा खर्च करने के बाद समय के साथ खेल रहा है, मेरे लिए सबसे अच्छा समाधान वीडियो को अंत से पहले दूसरे का एक अंश रोकना था, इस प्रकार इसे उस फ्रेम पर रखना था। कुछ इस तरह:
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 का उपयोग कर पकड़) के बाद, हम YouTube प्लेयर एपीआई से वीडियो अवधि प्राप्त कर सकते हैं (player.getDuration का प्रयोग करके), और फिर एक समारोह समय पर setInterval का उपयोग करने वाले अंत से पहले वीडियो 0.1 सेकंड (या जो भी मूल्य हम चुनते हैं) को रोकता है।
स्रोत
2015-01-23 01:26:59
मुझे यह समाधान पसंद है - अगर कोई निम्न रिज में देख रहा है, तो अंतिम फ्रेम बहुत गंदा रोका जा सकता है। एक 'img' टैग में स्वैपिंग आपको उच्च गुणवत्ता वाले थंबनेल को चुनने में सक्षम करेगी। – andrewb