【发布时间】:2018-02-23 21:44:01
【问题描述】:
我已经为此苦苦挣扎了一段时间。我有一系列 AKPlayers。
var players = [AKPlayer]()
我在网上搜索了很多关于同一问题的其他问题,他们都建议使用:AKPlayer.play(atTime: AVAudioTime)
我已经尝试过这样做(以及其他类似的尝试):
var sampleRate = selectedSong!.channels[0].audioFile!.sampleRate
var sampleTime = players[0].audioTime(at: players[0].currentTime)?.sampleTime
var startTime = AVAudioTime(sampleTime: sampleTime! + Int64(0.25*sampleRate), atRate: sampleRate)
for audioPlayer in players {
audioPlayer.play(at: startTime)
}
和其他类似的东西:
for audioPlayer in players {
audioPlayer.play(when: 0, hostTime: mach_absolute_time())
}
但他们都没有工作。播放时间之间存在明显差异。 (AudioFiles 的长度相同,格式相同)。
如果有帮助,我的设置如下:
AKPlayer -> AKPitchShifter
> AKMixer > AudioKit.output
AKPlayer
** 以上所有AKPlayers 都附加到players 数组中。
这可能是因为我对 AVAudioTime 是什么以及它是如何工作的缺乏了解。
提前致谢。
******* 注释 ******
docs 对 AKPlayer 说
玩家可以被锁定到一个共同的 在各种播放功能中使用 hostTime 来播放时钟和视频
但没有提供同步到 hostTime 的示例。
【问题讨论】: