准确将NStimeInterval转换为CMTime

8
我正在使用两个播放器:一个是MPMoviePlayerController,另一个是AVPlayer。每当MPMoviePlayerController被搜索时,它就会将时间设置为AVPlayer。所有的都工作得很好。但是,在将MPMoviePlayerController当前时间转换为CMTime时,它四舍五入了(例如:如果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
}

6
如果我将代码中的 "CMTimeMake(seekTime, 1)" 替换为 "CMTimeMakeWithSeconds(seekTime, 1000000)",那么代码就能正常工作了。请注意,这只是一种翻译,可能需要根据上下文进行适当调整。 - kmReddy
你应该把那个作为答案发布。 - chakrit
1
这个数字有常量吗? - izzy
1个回答

7

Try this :

  CMTime seekingCM = CMTimeMakeWithSeconds(playbackTime, 1000000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接