1

我有长达 10 分钟的大型循环背景音乐文件。声音循环完美,如果播放器没有引入延迟,您将不会注意到循环点在哪里。

AVAudioPlayer 可以播放它们,而用户不会听到由延迟或其他循环问题引起的间隙吗?

4

3 回答 3

4

您可能会听到延迟,因为您的音乐被压缩(例如 mp3)。AVAudioPlayer 必须在 mp3 流式传输时对其进行解码。如果你有相同的未压缩格式的音乐,它会占用更多的磁盘空间,但会无缝循环。

于 2015-04-22T20:14:02.347 回答
2

只要您最后不停止/启动它并且设置numberOfLoops为负整数,它就可以工作。

于 2012-12-03T15:42:54.420 回答
2

我在尝试创建无缝循环时遇到了问题。我尝试使用该numberOfLoops属性,但没有成功。我尝试切换到未压缩的音频文件,但没有成功。我什至尝试切换到AVAudioQueuePlayer, 与同一资产的多个实例一起排队,但没有成功。最后,我通过创建AVAudioPlayer(player1 & player2) 的两个实例并在它们之间切换来解决问题。我开始播放 player1 并使用 player2 的prepareToPlay方法,以及play(atTime time:)将 TimeInterval 设置为player1.deviceCurrentTime - player1.currentTime + player1.duration. 然后我使用委托方法audioPlayerDidFinishPlaying准备 player1 在 player2 完成后重新开始播放。老实说,我不知道为什么这种方法有效并且简单地设置numberOfLoops为 -1 没有。但它也可能对你有用

于 2017-03-08T00:46:25.600 回答