AVAudioPlayerNode - 获取播放器状态?

AVAudioPlayerNode - Get Player State?

在 iOS 项目中,我将 AVAudioPlayerNode 与 AVAudioEngine 和 AVAudioUnitTimePitch 结合使用。一切都很好。但是,我想知道是否有办法弄清楚当前播放器的状态(例如 isPlaying、isPaused)或至少播放位置是什么。

虽然 AVAudioPlayer 至少允许您获取 currentTime 参数,但我还不知道如何使用 AVAudioPlayerNode 获取该信息。我尝试使用 the swift documentation 中描述的 nodeTimeForPlayerTimeplayerTimeForNodeTime 方法,但我无法取得任何进展。

如有任何帮助,我们将不胜感激。

由于 AVAudioPlayerNode 被设计为音频流,因此它不一定会跟踪特定文件中的时间。但是,AVAudioPlayerNode 确实会保留 运行 播放所有音频的时间。此计时器不会随每个文件重置,要更改它,您必须明确告诉它您要从哪里开始计数。

因此,要查找玩家当前玩游戏的时间,您必须执行以下操作:

player.lastRenderTime.sampleTime / file.fileFormat.sampleRate

现在为了让计时器在每个文件后重置,您必须明确重置玩家的当前时间。为此,请使用 player.playAtTime: 函数。

如果您想要示例,请在此处查看示例:https://github.com/danielmj/AEAudioPlayer