当我使用AVAudioPlayer播放本地音频文件时,我发现了一种奇怪的行为,即音频播放器的播放速度比正常速度快约0.04%。我根本没有改变播放器的播放速度。
我在使用iOS 8和iPad模拟器的iPadMini上遇到此问题,但在使用iOS 7的iPad Air上没有出现此类问题。
为了显示问题,我编写了一些简单的代码,定期将player.currentTime与系统时钟进行比较:
- (void) viewDidLoad
{
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:
[[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp3"] error:nil];
[self.audioPlayer prepareToPlay];
}
- (IBAction) onPlayButtonClicked:(id)sender
{
[self.audioPlayer play];
self.playBeginTime = [NSDate timeIntervalSinceReferenceDate];
[NSTimer scheduledTimerWithTimeInterval:4.0 target:self selector:@selector(report)
userInfo:nil repeats:YES];
}
- (void) report
{
NSTimeInterval elapsedSystemTime = [NSDate timeIntervalSinceReferenceDate] - self.playBeginTime;
NSTimeInterval playerTime = self.audioPlayer.currentTime;
printf ( “\nElapsedSystemTime(%.5f) - PlayerTime(%.5f) = Latency(%.5f)”,
elapsedSystemTime, playerTime, elapsedSystemTime - playerTime);
}
输出如下(在iOS8的iPadMini上):
ElapsedSystemTime(4.00141) - PlayerTime(3.95601) = Latency(0.04540)
ElapsedSystemTime(8.00133) - PlayerTime(7.95741) = Latency(0.04391)
ElapsedSystemTime(12.00131) - PlayerTime(11.95896) = Latency(0.04235)
...
ElapsedSystemTime(112.00131) - PlayerTime(111.99884) = Latency(0.00247)
ElapsedSystemTime(116.00137) - PlayerTime(116.00068) = Latency(0.00069)
ElapsedSystemTime(120.00133) - PlayerTime(120.00209) = Latency(-0.00075)
...
ElapsedSystemTime(232.00133) - PlayerTime(232.04685) = Latency(-0.04552)
ElapsedSystemTime(236.00132) - PlayerTime(236.04853) = Latency(-0.04721)
ElapsedSystemTime(240.00132) - PlayerTime(240.05002) = Latency(-0.04870)
请注意,延迟值最初以0.045秒开始,但在播放音频240秒后,延迟值已降至-0.0487秒。 这表明音频播放器实际上的播放速度明显高于1倍速。
有没有人有同样的问题?有什么办法可以解决吗?
谢谢大家,
罗伊