歌曲长度倒计时,需要跟踪剩余长度

时间:2013-03-22 13:46:43

标签: php javascript countdown

我有一个javascript以下的歌曲长度倒计时。我在php页面中使用它。

我遇到的问题是,当我刷新页面时,或者当我在播放歌曲时进入页面时,我将无法获得剩余的长度。我会得到完整的歌曲lentgh倒计时。

例如,歌曲为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'];?>);

1 个答案:

答案 0 :(得分:0)

使用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 = $songend-$now_sec;