#javascript #api #youtube-api
#javascript #API #youtube-api
Вопрос:
Я работаю над проектом с клиентом, которому требуется пользовательский видеопроигрыватель с использованием API youtube player. После отправки работы он жалуется, что вход или выход из его учетной записи Google влияет на player.seekTo() следующим образом:
Клиент: «Я использую плейлист YouTube для добавления видео и воспроизведения его в плейлисте, а также изменения времени начала видео программно. Пример: https://jsfiddle.net/s3ow4rv1 /.»
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player, playerCont, ini_fullscreen = false, i = 0, ti = [], done = false, ctime = true, play_time = 0, real_play_time;
const playlist = ["WCFCdxzFBa4"];
const startSeconds_arr = [26];
const endSeconds_arr = [100];
function openFullscreen(elem) {
if (elem.requestFullscreen) {
elem.requestFullscreen();
} else if (elem.mozRequestFullScreen) { /* Firefox */
elem.mozRequestFullScreen();
} else if (elem.webkitRequestFullscreen) { /* Chrome, Safari and Opera */
elem.webkitRequestFullscreen();
} else if (elem.msRequestFullscreen) { /* IE/Edge */
elem.msRequestFullscreen();
}
}
$(document).ready(function() {
playerCont = $('#video-container')[0];
});
$(window).load(function(){
player = new YT.Player('ytplayer', {
width: '100%',
height: '100%',
playerVars : {
playlist: playlist.join(','),
autoplay: 0, // Auto-play the video on load
controls: 1, // Show pause/play buttons in player
modestbranding: 1, // Hide the Youtube Logo
fs: 1, // Hide the full screen button
cc_load_policy: 0, // Hide closed captions
iv_load_policy: 3, // Hide the Video Annotations
autohide: 0, // Hide video controls when playing
playsinline: 1, // Plays inline
rel: 0 // Shows related content from the same channel
},
events: {
onStateChange: function(event) {
var index = player.getPlaylistIndex();
if(event.data == YT.PlayerState.BUFFERING){
if(!ini_fullscreen){
//openFullscreen(playerCont);
ini_fullscreen = true;
}
ctime = false;
real_play_time = player.getCurrentTime();
if(i != index || (i == playlist.length-1 amp;amp; typeof ti[i] != 'undefined' amp;amp; real_play_time == 0)){
for(var j = 0;j<ti.length;j ){
clearInterval(ti[j]);
}
i = index;
ti = [];
player.loadPlaylist(playlist, i,startSeconds_arr[i]);
done = true;
}
else if(!done amp;amp; i < playlist.length){
player.seekTo(startSeconds_arr[i],true);
done = true;
}
}
else if(event.data == YT.PlayerState.PAUSED){
ctime = false;
}
else if(event.data == YT.PlayerState.PLAYING){
if(i < playlist.length){
ctime = true;
$('#indicate-track').html('Indicator: Video (' (i 1) ') out of (' playlist.length ')<br>');
real_play_time = player.getCurrentTime();
if(play_time != real_play_time){
play_time = Math.abs(Math.round(real_play_time - startSeconds_arr[i] - 0.0));
}
if(typeof ti[i] == 'undefined'){
ti[i] = setInterval(function(){
if(ctime){
play_time = 0.5;
}
$('#indicate-time').html('Time Passing: ' Math.round(startSeconds_arr[i] play_time) ' secs, ends at ' endSeconds_arr[i] '<br>');
if(play_time >= (endSeconds_arr[i]-startSeconds_arr[i])){
clearInterval(ti[i]);
if(i < playlist.length-1){
done = false;
play_time = 0;
player.nextVideo();
i ;
}
else{
done = false;
play_time = 0;
player.stopVideo();
i = 0;
}
}
}, 500);
}
}
}
}
}
});
});
Клиент: «Когда я захожу в свою учетную запись Google и пытаюсь запустить этот скрипт, он всегда начинается с 0. Однако, когда я выхожу из своей учетной записи или в режиме инкогнито, он запускается во время, указанное в списке воспроизведения. Я пытаюсь выяснить, как вход в систему / выход из учетной записи Google влияет на этот сценарий, и что я могу с этим поделать. »
Между тем, это хорошо работает со мной в обоих случаях, когда я входил / выходил из своей учетной записи Google. Поэтому я посоветовал ему очистить кеш браузера, отключить кеш браузера или даже переустановить браузер. Но он говорит, что ничего не помогает решить эту проблему, и твердо убежден, что вход в систему или выход из учетной записи Google влияет на player.seekTo().
Пожалуйста, сообщите; влияет ли вход или выход из учетной записи Google на player.seekTo() при использовании API youtube Player?