首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioPCMBuffer -读取(into buffer: AVAudioPCMBuffer)内存崩溃?(缓冲区溢出)

AVAudioPCMBuffer -读取(into buffer: AVAudioPCMBuffer)内存崩溃?(缓冲区溢出)
EN

Stack Overflow用户
提问于 2017-08-20 05:57:00
回答 1查看 1K关注 0票数 1

以下代码适用于我所有设备(iPhone、Apple Watch、模拟器)上持续时间较短的音频文件:

let file = try! AVAudioFile(forReading: url!) let format = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: file.fileFormat.sampleRate, channels: file.fileFormat.channelCount, interleaved: false) let buf = AVAudioPCMBuffer(pcmFormat: format!, frameCapacity: UInt32(file.length)) try! file.read(into: buf!)

崩溃发生在try! file.read(into: buf!),然而,例如,试图读取5分钟长的音频文件会导致在我的Apple Watch上运行崩溃(尽管可以在Apple Watch模拟器上运行)。和Program ended with exit code: 0在一起。

观察调试工具,很明显,这个过程对Apple Watch来说比iPhone要繁重得多。我尝试过在不同的线程、后台等上运行它,但都无济于事。

我知道我可以将缓冲区发送到iPhone进行处理,但是我想看看(即使这需要更长一点的时间)是否可以完全从手表读取缓冲区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-20 08:22:30

在44.1 53MB下,5分钟的单声道LPCM float32音频将是5*60*44100*4字节,或大约53MB。立体声是这个数字的两倍。我不知道这款手表的内存限制是多少,但我认为你已经超出了限制。

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

https://stackoverflow.com/questions/45776633

复制
相关文章

相似问题

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