如何解决AudioKit 5 iOS 当前播放时间
您好,AudioKit 用户,
我正在尝试设置带有播放时间指示的 AudioKit 5,但遇到了问题。
如果我使用 AudioPlayer 的持续时间属性,这是音频文件的总时间,而不是当前播放时间。
例如:
let duration = player.duration
总是给出文件的总时间。
查看来自 AKAudioPlayer 的旧代码,它似乎有一个“currentTime”属性。
迁移指南 (https://github.com/AudioKit/AudioKit/blob/v5-main/docs/MigrationGuide.md) 提到了旧版本中一些可能有用的类,但是“AKTimelineTap”没有替代品,没有开发人员的评论......很好。
也仍然不确定如何操作当前播放时间...
我还查看了 Audio Kit 5 的 Cookbooks,但这是用于添加效果和节点,不一定用于播放显示等。
感谢您对这个新版 AudioKit 的帮助。
解决方法
你可以在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。