現在、スライダーで再生中の曲の再生時間を変更しようとしています。
私の問題は、スライダーに基づいて再生をスケジュールするための正確な AVAudioTime を取得することです
コード(スウィフト)は次のようになります。
@IBAction func ChangeAudioTime(sender: AnyObject) {
//get current sampleRate of song already playing
var nodetime: AVAudioTime = self.playerNode.lastRenderTime
var playerTime: AVAudioTime = self.playerNode.playerTimeForNodeTime(nodetime)
playerNode.stop()
var time: NSTimeInterval = NSTimeInterval(Slider.value)
var hostTime = AVAudioTime.hostTimeForSeconds(time)
var sampleTime = AVAudioFramePosition(hosttime/UInt64(playerTime.sampleRate))
var ExampleTime: AVAudioTime = AVAudioTime(hostTime:hostTime, sampleTime: sampleTime, atRate: playerTime.sampleRate)
playerNode.scheduleFile(audioFile, atTime:ExampleTime, completionHandler:nil)
playerNode.play()
}
スライダーの最大値には曲の長さが割り当てられているため、問題はありません。
曲は最初から再生されるだけです
コンソールでの ExampleTime の出力は次のとおりです。
<AVAudioTime 0x1702b4160: 147.874222 s 80475 fr (/44100 Hz)>
私は何を間違っていますか?