从 NStimeInterval 准确转换为 CMTime

Posted

技术标签:

【中文标题】从 NStimeInterval 准确转换为 CMTime【英文标题】:Convert from NStimeInterval to CMTime accurately 【发布时间】:2013-08-13 08:14:36 【问题描述】:

我正在使用两个播放器,一个是MPMoviePlayerController,另一个是AVPlayer。无论何时寻找MPMoviePlayerController,它都会将时间设置为AVPlayer。一切正常。在将 MPMoviePlayerController 当前时间转换为 CMTime 时,它正在四舍五入 ex:(如果 mpplayer 时间为 11.80132,则四舍五入为 11)。

不四舍五入,如何将时间设置为AVPlayer

获取mpplayer时间并发送到AVPlayer类的代码

[avplayerClass  setCurrentTime:[self.videoPlayer currentPlaybackTime]];
NSLog(@"CurrentTime:%f",[self.videoPlayer currentPlaybackTime]);//11.801345

AVPlayer 类中的代码并将时间转换为CMTime

-(void)setCurrentTime:(NSTimeInterval)seekTime

    CMTime seekingCM = CMTimeMake(seekTime, 1);
    [self.player seekToTime:seekingCM 
            toleranceBefore:kCMTimeZero 
             toleranceAfter:kCMTimePositiveInfinity];
    [self.player seekToTime:seekingCM];
    NSLog(@"Current time123ns%%%%%%:%f",CMTimeGetSeconds(seekingCM));//11
    NSLog(@"Current time123ns%%%%%%:%f",seekTime);//11.801345

【问题讨论】:

得到答案 如果我替换 CMTime seekCM = CMTimeMake(seekTime, 1);用这个 CMTime seekCM = CMTimeMakeWithSeconds(seekTime, 1000000);它工作正常 您应该将其发布为答案。 这个数字有常数吗? 【参考方案1】:

试试这个:

  CMTime seekingCM = CMTimeMakeWithSeconds(playbackTime, 1000000);

【讨论】:

以上是关于从 NStimeInterval 准确转换为 CMTime的主要内容,如果未能解决你的问题,请参考以下文章

将一串数字转换为 NSTimeInterval

将 NSTimeInterval 持续时间转换为 NSString

为啥核心数据托管对象中的 NSDate 转换为 NSTimeInterval?

以 00:00:00 时钟格式将 NSTimeInterval 转换为 NSString

NSTimeInterval 到小时和分钟的错误转换

IOS--时间 NSDate,NSTimeInterval的一些转换