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

nan*_*ano 18 iphone avfoundation avplayer cmtime

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

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

这里的currentTime以秒为单位获取值.如何获得精确的currentTime值,但以毫秒为单位?

Sam*_*art 56

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

Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;
Run Code Online (Sandbox Code Playgroud)

可悲的是,你将不得不使用它作为一个floatFloat64你不能使用该结果作为CMTime


Tre*_*mas 6

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

let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)
Run Code Online (Sandbox Code Playgroud)

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