我正在使用AVAudioPlayerNode制作一个音频播放器,并播放一首具有某种效果(延迟、音调变化、速率变化等)的歌曲,但我被困在显示歌曲当前时间和持续时间上。AVAudioPlayerNode似乎没有AVAudioPlayer.currentTime或.duration那样的功能。
如果你能帮助我用AVAudioPlayerNode显示当前时间和持续时间,我将不胜感激。
发布于 2014-12-11 22:39:10
目前,我使用的是:
- (NSTimeInterval)currentTimeInSeconds
{
AVAudioTime *nodeTime = self.playerNode.lastRenderTime;
AVAudioTime *playerTime = [self.playerNode playerTimeForNodeTime:nodeTime];
NSTimeInterval seconds = (double)playerTime.sampleTime / playerTime.sampleRate;
return seconds;
}除了抽象时基中的渲染时间之外,播放器节点还通过playerTimeForNodeTime将此时间转换为其自己的播放时间轴。也尊重暂停等。
发布于 2016-02-19 02:50:40
下面是swift中的代码:
private func currentTime() -> NSTimeInterval {
if let nodeTime: AVAudioTime = myAvAudioPlayer.lastRenderTime, playerTime: AVAudioTime = myAvAudioPlayer.playerTimeForNodeTime(nodeTime) {
return Double(Double(playerTime.sampleTime) / playerTime.sampleRate)
}
return 0
}只需用您的AVAudioPlayerNode替换myAvAudioPlayer即可!
祝你编码愉快!
发布于 2017-10-30 03:36:07
在AVAudioPlayerNode SWIFT 4:期间
func durationOfNodePlayer(_ fileUrl: URL) -> TimeInterval {
do {
let file = try AVAudioFile(forReading: fileUrl)
let audioNodeFileLength = AVAudioFrameCount(file.length)
return Double(Double(audioNodeFileLength) / 44100) //Divide by the AVSampleRateKey in the recorder settings
} catch {
return 0
}
}https://stackoverflow.com/questions/26574459
复制相似问题