使CMTime具有非常小的值
我有一个小整数值,我想将其转换为CMTime。
问题是
CMTime(值:_,timeScale:_)
要么
CMTimeMakeWithSeconds(value:_,timeScale:_)
将始终返回发言权,以便时间总是等于0.0 seconds
let smallValue = 0.0401588716 let frameTime = CMTime(Int64(smallValue) , timeScale: 1) //frameTime is 0.0 seconds because of Int64 conversion let frameTimeInSeconds = CMTimeMakeWithSeconds(smallValue , timeScale: 1) // frameTimeInSeconds also returns 0.0 seconds.
CMTime
将时间值表示为具有整数分子( value
)和分母( timescale
)的有理数 。 为了表示像您这样的小值,您必须选择更大的时间刻度(取决于所需的精度)。 例:
let smallValue = 0.0401588716 let frameTime = CMTime(seconds: smallValue, preferredTimescale: 1000000) print(frameTime.seconds) // 0.040158
在发布问题之前,我应该先考虑一下。
let smallValue = 0.0401588716 let oneSec = CMTimeMakeWithSeconds(1, timeScale: 1) let frameTime = CMTimeMultiplyByFloat64(oneSec , smallValue) print(CMTimeGetSeconds(frameTime)) // 0.040158872