我有一个AVAudioPlayerNode
循环的歌曲片段:
audioPlayer.scheduleBuffer(segment, at: nil, options:.loops)
我想在播放时获取歌曲的当前位置。通常,这是通过计算 =currentFrame / audioSampleRate
在哪里
var currentFrame: AVAudioFramePosition {
guard let lastRenderTime = audioPlayer.lastRenderTime,
let playerTime = audioPlayer.playerTime(forNodeTime: lastRenderTime) else {
return 0
}
return playerTime.sampleTime
}
但是,当循环结束并重新启动时,currentFrame
不会重新启动。但它仍然会增加,这使得currentFrame / audioSampleRate
当前位置不正确。
那么计算当前位置的正确方法是什么?