当我在播放之前获取音频文件的持续时间时:
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
...
[audioPlayer prepareToPlay];
duration = audioPlayer.duration;
例如,我得到的持续时间为 16.71 秒。然后在播放时每 0.2 秒采样一次,持续时间会发生变化。它每 1.2 到 1.6 秒更改为:16.71 秒、17.02 秒、17.23 秒、17.33 秒、17.38 秒、17.43 秒、17.38 秒、17.29 秒、17.31 秒,然后在最后 2.5 秒内保持在 17.51 秒。所以它会上升和下降。
我以一种更新滑块位置的方法进行采样,并显示经过的时间和总持续时间。您可以想象,在播放时看到持续时间(被 int 截断)从 16 变为 17 看起来真的很奇怪。此外,滑块位置将随着所有这些漂移而关闭。
有谁知道这是为什么?
现在我们正在讨论持续时间:有谁知道为什么在省略audio player.duration
时可以返回大约是实际持续时间两倍的值?[audioPlayer prepareToPlay]