Objective-c,AVPlayer中的UISlider在擦除器后工作不正常

时间:2015-08-29 05:34:43

标签: ios objective-c iphone avplayer uislider

我已经实现了从URL播放音频歌曲的AVPlayer。它工作正常,直到我(擦洗器)前进/后退歌曲。 UISlider根据歌曲长度结束,完全正常。但是每当我尝试前进或后退歌曲时,UISlider都无法正常工作。例如:我的歌曲长度是2.46(分钟)。 UISlider结束了,但歌曲还在播放。 (儿子尚未完成)。即使我做了硬编码设置sliderbar = 2.46的最大值,但没有工作。另一方面,如果我设置了sliderbar = 3.5(或aruond 4)的值,那么它工作正常。任何人都知道它为什么会发生。谢谢你提前!!!!!

完整代码:http://www.mediafire.com/download/tcpno1y3x8ocmri/AVPlayer_Demo.zip  我的示例代码:

- (void)updateTime:(NSTimer *)timer {

    currentTime = CMTimeGetSeconds(playerItem.currentTime);
    duration = CMTimeGetSeconds(playerItem.duration);
    [self.audioSliderBar setValue:(currentTime/duration)];
    float minutes = floor(currentTime/60);
    seconds =currentTime - (minutes * 60);
    float duration_minutes = floor(duration/60);
    duration_seconds =
    duration - (duration_minutes * 60);
    NSString *timeInfoString = [[NSString alloc]
                                initWithFormat:@"%0.0f:%0.0f",
                                minutes, seconds ];
    self.audioCurrentTimeLabel.text = timeInfoString;

}

- (IBAction)audioPlayerValueChanged:(UISlider *)aSlider  {

    [player seekToTime:CMTimeMakeWithSeconds(duration_seconds*aSlider.value, 1)];
}

- (IBAction)touchDown:(id)sender {

    [player pause];
    [nsTimer2 invalidate];
}

- (IBAction)touchUp:(id)sender {

   [player play];
   nsTimer2=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime:) userInfo:nil repeats:YES];

}

1 个答案:

答案 0 :(得分:0)

您正在计算时间duration_seconds*aSlider.value,但滑块值不是0..1。您应该使用aSlider.value或保留当前代码,但更改滑块min / max =(0,1)。