私は 1 つのページに Youtube プレーヤーを埋め込んでおりplayer.getDuration()
、'player.getCurrentTime()' を使用して合計秒数と現在の秒数を検出しています。次のように、YouTube の再生秒数に対応する jQuery スライダーを作成しました。
$('#progressbar').slider({
value: 0,
orientation: "horizontal",
range: "min",
min:0,
max:songDuration,
animate: true,
change: function(event, seekto){
//We got the volume.value -> Set it to the video;
player.seekTo(seekto.value);
}
});
ここで、songDuration は現在の曲の長さの合計を表します。また、変更関数 seekto は、ビデオ内でシークする秒数を表します。
また、私はこのコードを持っています:
setInterval(function(){
$("#progressbar").slider({max: player.getDuration()});
$("#progressbar").slider({value: player.getCurrentTime()});
$('.current_elapsed').html(getPropperDuration(Math.floor(player.getCurrentTime())));
},1000);
再生された秒数でスライダーを最初から最後まで更新します。
問題は、プレーヤーが 1 秒のごく一部を繰り返すか、setInterval 関数が 1 秒ごとに Youtube プレーヤーの秒数を更新するのと同じ秒を繰り返すことです。これにより、プレーヤーは 1 秒の小さな断片を繰り返します。
同じスライダーを使用してビデオをシークし、ビデオの合計経過時間を表す回避策はありますか?