3

我有一个WEBVTT文件与视频连接,视频长度约为 120 分钟。视频的缩略图顶部提示每秒运行一次,这意味着120*60=7200 secs.

如何WEBVTT format(hh:mm:ss.ttt)使用 php 循环函数将 7200 秒转换为?例子:

00:00:00.000 --> 00:00:01.000
00:00:01.000 --> 00:00:02.000
00:00:02.000 --> 00:00:03.000
00:00:03.000 --> 00:00:04.000    
and so on...    

谢谢!

4

2 回答 2

1

使用date()

date_default_timezone_set('UTC'); // To fix some timezone problems

$start = 0; // 0h
$end = 7200; // 2h
$output = '';

for($i=$start;$i<$end;$i++){
    $output .= date('H:i:s', $i).'.000 --> '.date('H:i:s', $i+1).'.000'.PHP_EOL;
}

echo $output;

请注意,如果 $limit 达到 86400,它将再次从 0 开始。

于 2013-04-14T17:09:02.173 回答
1

我不认为 PHP 是正确的工具。如果您想在屏幕上为您的用户显示它,听起来 Javascript 可能就是您所追求的。

对于 PHP,可以使用 date 函数

function secondsToWebvtt($seconds) {
  //set the time to midnight (the actual date part is inconsequential)
  $time = mktime(0,0,0,1,2,2012);
  //add the number of seconds
  $time+= $seconds;
  //return the time in hh:mm:ss.000 format
  return date("H:i:s.000",$time);
}

使用 Javascript,我会使用这样的函数

 var seconds = 0;
 function toTime() {
    var time = new Date("1/1/2012 0:00:00");
    var newSeconds = time.getSeconds() + seconds;
    var strSeconds = newSeconds + "";
    if(strSeconds.length < 2) { strSeconds = "0" + strSeconds; }
    var hours = time.getHours() + "";
    if(hours.length < 2) { hours = "0" + hours; }
    var minutes = time.getMinutes() + "";
    if(minutes.length < 2) { minutes = "0" + minutes; }
    var dispTime = hours + ":" + minutes + ":" + strSeconds + ".000";
    return dispTime;
  }

  function getTime() {
     var time = toTime(seconds);
     //do something with time here, like displaying on the page somewhere.
     seconds++;
  }

然后使用 setInterval 调用函数

 setInterval("getTime",1000);
于 2013-04-14T17:19:50.480 回答