我在下面的JavaScript中了解歌曲的长度倒计时。我在php页面中使用它。
我的问题是,当我刷新页面或在播放歌曲的同时进入页面时,我无法获得剩余的长度。我将把整首歌的长度倒计时。
例如,播放2分钟的歌曲。如果它从上午9:38开始,并且我在上午9:39进入页面,我希望倒数是1分钟,而不是2分钟。
所以我想真正的问题是:如何在服务器端跟踪剩余的歌曲长度?
var startTime, countAmt, interval;
function now() {
return ((new Date()).getTime());
}
function tick() {
var elapsed = now() - startTime;
var cnt = countAmt - elapsed;
var elem = document.getElementById("countdown");
if (cnt > 0) {
elem.innerHTML = minute(Math.round(cnt / 1000));
} else {
elem.innerHTML = "0:00";
clearInterval(interval);
}
}
function startTimer(secs) {
document.getElementById("countdown").innerHTML = minute(secs);
countAmt = secs * 1000;
startTime = now();
interval = setInterval(tick, 1000);
}
function minute(secs){
minVar = Math.floor(secs/60); // The minutes
secs = secs % 60; // The balance of seconds
if (secs < 10) {
secs = "0"+secs;
}
return minVar+":"+secs;
}
startTimer(<?php echo $stream['info']['length'];?>);
document.getElementById("countdown").innerHTML = minute(<?php echo $stream['info']['length'];?>);
最佳答案
使用Winamp的高级标题格式,我可以使用以下格式发送歌曲开始的时间:h:m:s
。
我得到的总秒数:
sscanf($song_begins, "%d:%d:%d", $hours, $minutes, $seconds);
$song_begins_sec = $hours * 3600 + $minutes * 60 + $seconds;
获取当前时间:
$now = date('H:i:s', time());
片刻之间:
sscanf($now, "%d:%d:%d", $hours, $minutes, $seconds);
$now_sec = $hours * 3600 + $minutes * 60 + $seconds;
然后在歌曲结束时计算:
$songend = $song_begins_sec+$stream['info']['length'];
因此正确的$ countdown是:
$countdown = $songend-$now_sec;
关于php - 歌曲长度倒计时,需要跟踪剩余长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15571933/