首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AVAudioPlayerNode显示歌曲当前时间和播放时长

如何使用AVAudioPlayerNode显示歌曲当前时间和播放时长
EN

Stack Overflow用户
提问于 2014-10-26 23:08:29
回答 6查看 6.1K关注 0票数 6

我正在使用AVAudioPlayerNode制作一个音频播放器,并播放一首具有某种效果(延迟、音调变化、速率变化等)的歌曲,但我被困在显示歌曲当前时间和持续时间上。AVAudioPlayerNode似乎没有AVAudioPlayer.currentTime或.duration那样的功能。

如果你能帮助我用AVAudioPlayerNode显示当前时间和持续时间,我将不胜感激。

EN

回答 6

Stack Overflow用户

发布于 2014-12-11 22:39:10

目前,我使用的是:

代码语言:javascript
复制
- (NSTimeInterval)currentTimeInSeconds
{
    AVAudioTime *nodeTime = self.playerNode.lastRenderTime;
    AVAudioTime *playerTime = [self.playerNode playerTimeForNodeTime:nodeTime];

    NSTimeInterval seconds = (double)playerTime.sampleTime / playerTime.sampleRate; 
    return seconds;
}

除了抽象时基中的渲染时间之外,播放器节点还通过playerTimeForNodeTime将此时间转换为其自己的播放时间轴。也尊重暂停等。

票数 14
EN

Stack Overflow用户

发布于 2016-02-19 02:50:40

下面是swift中的代码:

代码语言:javascript
复制
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即可!

祝你编码愉快!

票数 8
EN

Stack Overflow用户

发布于 2017-10-30 03:36:07

AVAudioPlayerNode SWIFT 4:期间

代码语言:javascript
复制
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
       }

}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26574459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档