【发布时间】:2021-02-13 17:20:33
【问题描述】:
我有一个 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 不正确为当前位置。
那么计算当前位置的正确方法是什么?
【问题讨论】:
标签: ios swift avaudioplayer avaudioplayernode