首页 文章

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

提问于
浏览
16

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

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

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

3 回答

  • 54

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

  • 2

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

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

    可悲的是,你必须将它用作 floatFloat64 你不能将该结果用作 CMTime

  • 6

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

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

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

相关问题