Answers:
1)CMTimeMake(1,10)
实际上表示1的值和10的时标。它们是分子和分母,所以它是1/10秒,而不是1秒。
2)结果将类似于CMTimeMake(2, 10)
,即2/10秒。
value/timescale = seconds
明确。
彼得是对的。以下代码使概念更清晰:
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秒,其中10000帧的时标为每秒600帧。
注意CMTimeMake(int64_t值,int32_t时间标度)和CMTimeMakeWithSeconds(Float64秒,int32_t preferredTimeScale)之间的差异
希望这种解释有所帮助。如需进一步的说明,请不要犹豫,在此职位上发表其他问题。
setMaxRecordedDuration
需要的preferredTimeScale
时间frame_rate
设置不同。每个人都只是盲目地使用600,而对于它到底在做什么没有很好的解释。
CMTime结构代表一个 length of time that is stored as rational number.
CMTime具有值和timescale字段,并表示时间值/ timescale seconds。
CMTimeMake(1, 48)
每1/48秒运行一个代码块,即每帧1块