将时间码转换为秒
问题描述:
我在使用JavaScript将时间码更改为帧时出现问题。 运行在30fps我们得到将时间码转换为秒
"00:00:01:00" = 30 frames
到目前为止好,只是我检查的秒数,在它被转换成这样:
首先不知道这是怎么回事呢? ! 有人指出我有\ n而不是\ nf。
其次 返回的帧不正确。 1分钟应该是1800秒不是1800000
如果你能告诉我,如果这是一个安赫奖励积分。
// set the frame rate or Frame Rat as we like to call him
var frameRat = 30 // fps
var numOfFrames = 60 // animation frame count
var animTime = "00:01:00:00" // time code
var a = convertTimeToFrames(animTime, frameRat);
var result = animTime + " at " + frameRat + " fps\n = " + a + " frames.";
alert(result);
function convertTimeCodeToSeconds(timeString, framerate)
{
var timeArray = timeString.split(":");
var hours = timeArray[0] * 60 * 60;
var minutes = timeArray[1] * 60;
var seconds = timeArray[2];
var frames = timeArray[3]*(1/framerate);
var str = "h:" + hours + "\nm:" + minutes + "\ns:" + seconds + "\f:" + frames;
alert(str)
var totalTime = hours + minutes + seconds + frames;
//alert(timeString + " = " + totalTime)
return totalTime;
}
function convertTimeToFrames(timeString, framerate)
{
var secs = convertTimeCodeToSeconds(timeString, framerate);
return secs * framerate;
}
答
你正在做数字和字符之间的操作。在分割后将所有值转换为数字,如下所示:
// set the frame rate or Frame Rat as we like to call him
var frameRat = 30 // fps
var numOfFrames = 60 // animation frame count
var animTime = "00:01:00:00" // time code
var a = convertTimeToFrames(animTime, frameRat);
var result = animTime + " at " + frameRat + " fps\n = " + a + " frames.";
alert(result);
function convertTimeCodeToSeconds(timeString, framerate)
{
var timeArray = timeString.split(":");
var hours = parseInt(timeArray[0]) * 60 * 60;
var minutes = parseInt(timeArray[1]) * 60;
var seconds = parseInt(timeArray[2]);
var frames = parseInt(timeArray[3])*(1/framerate);
var str = "h:" + hours + "\nm:" + minutes + "\ns:" + seconds + "\nf:" + frames;
alert(str)
var totalTime = hours + minutes + seconds + frames;
//alert(timeString + " = " + totalTime)
return totalTime;
}
function convertTimeToFrames(timeString, framerate)
{
var secs = convertTimeCodeToSeconds(timeString, framerate);
return secs * framerate;
}
+0
我认为可能是这种情况。 'alert(typeof frames)'带着号码 –
+0
返回''parseInt(n)'这里应该替换为'parseInt(n,10)'来避免无意的解释为八进制。 – DocMax
您的字符串中有'\ f:'而不是'\ nf:'。你是这个意思吗? – DocMax
需求究竟是什么? – Ayush