AudioKit 5 iOS 当前播放时间

4

大家好,我是AudioKit用户。

我正在尝试为AudioKit 5设置播放时间指示,并遇到了问题。

如果我使用AudioPlayer的duration属性,那么获取的是音频文件的总时长,而不是当前的播放时间。

例如:

let duration = player.duration

始终显示文件的总时间。

查看AKAudioPlayer的旧代码,似乎有一个“currentTime”属性。

迁移指南(https://github.com/AudioKit/AudioKit/blob/v5-main/docs/MigrationGuide.md)提到了一些来自旧版本的可能有用的类,但是“AKTimelineTap”没有替代品,开发人员也没有注释......很不错。

还不确定如何操作当前的播放时间...

我还查看了Audio Kit 5的食谱,但这是用于添加效果和节点,而不一定是用于播放显示等方面的。

感谢任何关于这个新版本AudioKit的帮助。

1个回答

4
你可以在AudioPlayer中找到playerNode,它是AVAudioPlayerNode类。
使用lastRenderTime和playerTime,可以计算出当前时间。
例如:
// get playerNode in AudioPlayer.
let playerNode = player.playerNode

// get lastRenderTime, and transform to playerTime.
guard let lastRenderTime = playerNode.lastRenderTime else { return }
guard let playerTime = playerNode.playerTime(forNodeTime: lastRenderTime) else { return }
        
// use sampleRate and sampleTime to calculate current time in seconds.
let sampleRate = playerTime.sampleRate
let sampleTime = playerTime.sampleTime
let currentTime = Double(sampleTime) / sampleRate

谢谢,我会尝试一下。 - TheJeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接