准确地从NStimeInterval转换为CMTime

时间:2013-08-13 08:14:37

标签: objective-c mpmovieplayercontroller avplayer nstimeinterval cmtime

我使用的是两个玩家,一个是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
}

1 个答案:

答案 0 :(得分:4)

试试这个:

  CMTime seekingCM = CMTimeMakeWithSeconds(playbackTime, 1000000);