1) CMTimeMake(1,10)
表示时长为1秒,时间刻度为10帧/秒。这意味着10帧视频的持续时间为1秒?
2)
CMTime lastTime=CMTimeMake(1,10);
CMTime frameTime=CMTimeMake(1, 10);
CMTime currentTime=CMTimeAdd(lastTime, frameTime)
= (2,10)?
2秒的视频和每秒10帧的currentTime?
发布于 2010-10-23 08:16:55
1) CMTimeMake(1,10)
实际上表示值为1,时间刻度为10。它们是分子和分母,所以它是1/10秒,而不是1秒。
2)结果将类似于CMTimeMake(2, 10)
,即十分之二秒。
发布于 2011-06-10 16:02:26
彼得是对的。下面的代码使这个概念更加清晰:
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
上面的代码给出:{3000/600 = 5.000}
这意味着总持续时间为5秒,具有3000帧,时间尺度为每秒600帧。
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
这个给出了{10000/600 = 16.667}
这意味着总持续时间为16.667秒,具有600帧/秒的时间尺度的10000帧。
注意CMTimeMake(int64_t value,int32_t timescale)和CMTimeMakeWithSeconds(Float64 seconds,int32_t preferredTimeScale)之间的区别
希望这个解释能有所帮助。如果需要进一步的澄清,请不要犹豫,在这篇文章上发表进一步的问题。
发布于 2016-08-30 14:55:50
一个CMTime结构代表一个具有值和时间刻度字段的时间刻度( length of time that is stored as rational number.
CMTime ),并代表时间值/时间刻度秒。
https://stackoverflow.com/questions/4001755
复制相似问题