【问题标题】:AudioKit buffer consuming a lot of ramAudioKit 缓冲区消耗大量内存
【发布时间】:2017-10-09 06:58:09
【问题描述】:

打开文件或复制文件会使缓冲区大小爆炸。

tape1.write(from: tape2.pcmBuffer)

保存文件然后再次打开它(在组合之后)会发生同样的事情

AKAudioFile(forReading: url, commonFormat: .pcmFormatFloat32, interleaved: true)

这也需要大量内存,15 分钟的录制是 ~300mb 内存,iPhone 5s 无法处理。 有没有办法做得更好?如何减小缓冲区大小?

【问题讨论】:

    标签: ios swift audiokit


    【解决方案1】:

    要复制文件,您应该使用FileManager.copyItem FileManager.default.copyItem(at: src, to: dst)。如果这是您的意图,您也可以从同一个 URL 毫无问题地创建两个文件播放器。

    AKAudioFile 在实例化时不会读入缓冲区,因此内存使用在其他地方。 AKAudioFile.floatChannelData 和 AKAudioFile.pcmBuffer 会将整个文件读入缓冲区,从文件创建 AKAudioPlayer 也是如此。

    如果你正在播放长文件,你应该试试AKClipPlayer。它从磁盘流式传输文件,因此内存使用率很低。

    let clip = AKFileClip(url: url)
    let clipPlayer = AKClipPlayer(clips: [clip])
    

    【讨论】:

    • 谢谢,我会检查 AKClip 播放器,我发现播放器初始化和重新加载确实导致了问题
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 2014-01-04
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    相关资源
    最近更新 更多