gpt4 book ai didi

javascript - JS - Youtube Iframe API 返回错误的当前时间和持续时间?

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:14 24 4
gpt4 key购买 nike

我编写了一些代码来获取当前时间和持续时间,但是两次似乎都是错误的,持续时间比常规视频长,并且当前时间似乎太快,它也永远不会达到总持续时间量并稍微提前停止。

代码:

<script type="text/javascript">
var tag = document.createElement('script');
tag.id = 'iframe-demo';
tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var player;
function onYouTubeIframeAPIReady(event) {
player = new YT.Player('existing-iframe-example', {
events: { // Setup the events to use
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});

function onPlayerReady(event) {
event.target.playVideo(); // Auto play the video when ready
}

var myTimer;
function onPlayerStateChange(event){
if(event.data==1) { // playing
myTimer = setInterval(function(){
document.getElementById("time").innerHTML = (player.getCurrentTime() / 60.0000).toFixed(2);
document.getElementById("duration").innerHTML = (player.getDuration() / 60.0000).toFixed(2);
}, 100); // 100 means repeat in 100 ms
}
else { // not playing
clearInterval(myTimer);
}
}

}
</script>

如何解决这个问题?

最佳答案

查看 /60.0000 我想您想知道已经过去了多少分钟。您的实现的问题是 toFixed 每次都会四舍五入,因为 getCurrentTime() 返回一个小数部分大于 5 的值,大多数情况下类似于 x.9xxxx 来修复尝试 Math.floor() 并分别计算分钟和秒

这里是你可以用来显示分钟:秒

myTimer =   setInterval(function(){         
var currentTime = player.getCurrentTime();
var minutes = Math.floor(currentTime / 60) < 10 ? '0' + Math.floor(currentTime / 60.000) : Math.floor(currentTime / 60.000);
var seconds = Math.floor(currentTime % 60) < 10 ? '0' + Math.floor(currentTime % 60.000) : Math.floor(currentTime % 60.000);

document.getElementById("time").innerText = minutes + ' min : '+ seconds+ ' sec';
}, 100); // 100 means repeat in 100 ms

您应该注意,100 秒的十进制表示形式为 1.40(1 分 40 秒),但实际的十进制表示形式为1.66 因为在真正的十二月。表示 59 不会在 +1 时达到 1.00,但只会在 99 之后。如果您需要实际的 dec。表示更改这部分

document.getElementById("time").innerText = minutes + ' min : '+ seconds+ ' sec';

document.getElementById("time").innerText = minutes + ' min : '+( (seconds/60)*100) + ' sec';

在前面的代码片段中

关于javascript - JS - Youtube Iframe API 返回错误的当前时间和持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41293837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com