Iphone objectiveC/CMTime-将AVPlayer.duration转换为毫秒
我正在创建一个播放铃声的应用程序,我想知道每次播放铃声的当前时间(以毫秒为单位) CMTime cTime=播放器\当前时间; float currentTime=cTime.value/cTime.timescale 此处的currentTime以秒为单位获取值。Iphone objectiveC/CMTime-将AVPlayer.duration转换为毫秒,iphone,avfoundation,avplayer,cmtime,Iphone,Avfoundation,Avplayer,Cmtime,我正在创建一个播放铃声的应用程序,我想知道每次播放铃声的当前时间(以毫秒为单位) CMTime cTime=播放器\当前时间; float currentTime=cTime.value/cTime.timescale 此处的currentTime以秒为单位获取值。 如何获得准确的currentTime值,但以毫秒为单位?
如何获得准确的currentTime值,但以毫秒为单位?
Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;
遗憾的是,您必须将其用作
float
或Float64
您不能将该结果用作CMTime
我认为已接受的答案失去了细节。获取毫秒的更准确方法如下所示:
let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)
如果你先转换成秒,你就会失去精度 但是我们如何在下面的函数中传递这个浮点值呢(BOOL)insertTimeRange:(CMTimeRange)track的时间范围:(AvassettTrack*)track atTime:(CMTime)startTime错误:(NSError**)错误;因为它将CMTime作为参数。您可以使用原始时间(以秒为单位)并使用CMTimeMake函数创建具有该值的CMTime。这个十年前的答案仍然适用于时间测试。非常感谢。帮助我们解决了一个问题,在这个过程中损失了几分之一秒。这是错误的。根据苹果在CMTimeGetSeconds上的文档,“除法是在Float64中完成的,因此分数不会在返回的结果中丢失。”