AVAudioPlayerNode - 获取播放器状态?
AVAudioPlayerNode - Get Player State?
在 iOS 项目中,我将 AVAudioPlayerNode 与 AVAudioEngine 和 AVAudioUnitTimePitch 结合使用。一切都很好。但是,我想知道是否有办法弄清楚当前播放器的状态(例如 isPlaying、isPaused)或至少播放位置是什么。
虽然 AVAudioPlayer 至少允许您获取 currentTime
参数,但我还不知道如何使用 AVAudioPlayerNode 获取该信息。我尝试使用 the swift documentation 中描述的 nodeTimeForPlayerTime
和 playerTimeForNodeTime
方法,但我无法取得任何进展。
如有任何帮助,我们将不胜感激。
由于 AVAudioPlayerNode
被设计为音频流,因此它不一定会跟踪特定文件中的时间。但是,AVAudioPlayerNode
确实会保留 运行 播放所有音频的时间。此计时器不会随每个文件重置,要更改它,您必须明确告诉它您要从哪里开始计数。
因此,要查找玩家当前玩游戏的时间,您必须执行以下操作:
player.lastRenderTime.sampleTime / file.fileFormat.sampleRate
现在为了让计时器在每个文件后重置,您必须明确重置玩家的当前时间。为此,请使用 player.playAtTime:
函数。
如果您想要示例,请在此处查看示例:https://github.com/danielmj/AEAudioPlayer
在 iOS 项目中,我将 AVAudioPlayerNode 与 AVAudioEngine 和 AVAudioUnitTimePitch 结合使用。一切都很好。但是,我想知道是否有办法弄清楚当前播放器的状态(例如 isPlaying、isPaused)或至少播放位置是什么。
虽然 AVAudioPlayer 至少允许您获取 currentTime
参数,但我还不知道如何使用 AVAudioPlayerNode 获取该信息。我尝试使用 the swift documentation 中描述的 nodeTimeForPlayerTime
和 playerTimeForNodeTime
方法,但我无法取得任何进展。
如有任何帮助,我们将不胜感激。
由于 AVAudioPlayerNode
被设计为音频流,因此它不一定会跟踪特定文件中的时间。但是,AVAudioPlayerNode
确实会保留 运行 播放所有音频的时间。此计时器不会随每个文件重置,要更改它,您必须明确告诉它您要从哪里开始计数。
因此,要查找玩家当前玩游戏的时间,您必须执行以下操作:
player.lastRenderTime.sampleTime / file.fileFormat.sampleRate
现在为了让计时器在每个文件后重置,您必须明确重置玩家的当前时间。为此,请使用 player.playAtTime:
函数。
如果您想要示例,请在此处查看示例:https://github.com/danielmj/AEAudioPlayer