我已经实现了从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];
}
答案 0 :(得分:0)
您正在计算时间duration_seconds*aSlider.value
,但滑块值不是0..1。您应该使用aSlider.value
或保留当前代码,但更改滑块min / max =(0,1)。