iOS 8上的AVAudioPlayer播放速度异常

时间:2015-08-27 02:09:17

标签: ios avaudioplayer

当我使用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倍速。

有没有人有同样的问题?有什么办法可以解决吗?

谢谢大家,

罗伊

0 个答案:

没有答案