Tôi gặp phải vấn đề này và sau khi chi tiêu một loạt thời gian chơi với nó, giải pháp tốt nhất cho tôi là chỉ tạm dừng video một phần nhỏ của giây trước khi kết thúc, do đó giữ nó trên khung đó. Một cái gì đó như thế này:
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();
}
Sau khi video bắt đầu (mà chúng tôi bắt sử dụng onStateChange), chúng ta có thể có được thời lượng video từ API YouTube Player (sử dụng player.getDuration), và sau đó sử dụng setInterval để thời gian một hàm tạm dừng video 0,1 giây (hoặc bất kỳ giá trị nào chúng tôi chọn) trước khi kết thúc.
Nguồn
2015-01-23 01:26:59
Tôi thích giải pháp này - nếu ai đó đang xem ở độ phân giải thấp, khung cuối cùng có thể trông khá bẩn bị tạm dừng. Trao đổi trong thẻ 'img' sẽ cho phép bạn chọn hình thu nhỏ chất lượng cao. – andrewb