objectiveC / CMTime - 将AVPlayer.duration转换为毫秒

时间:2011-05-11 15:21:34

标签: iphone avfoundation avplayer cmtime

我正在创建一个播放铃声的应用,我想知道每次播放铃声的当前时间(以毫秒为单位)。

CMTime cTime = player_.currentTime; float currentTime = cTime.value / cTime.timescale;

此处的currentTime以秒为单位获取值。 如何获得精确的currentTime值,但以毫秒为单位?

3 个答案:

答案 0 :(得分:56)

有一种方法可以在几秒钟内获得当前时间,你可以花费1000倍,并且你有几毫秒的时间:

Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;

可悲的是,您必须将其用作floatFloat64,不能将此结果用作CMTime

答案 1 :(得分:6)

我认为接受的答案会丢失细节。获得毫秒的更准确方法如下:

let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)

如果先转换为秒,则会失去精确度。

答案 2 :(得分:2)

CMTime.value和CMTime.timescale都是整数,因此根据您的代码进行判断,结果会四舍五入,并且您无法获得精确的时间戳。请尝试CMTimeGetSeconds。