以下代码适用于所有设备(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 Simulator上运行)。使用Program ended with exit code: 0
。
观看调试工具,显然这个过程对Apple Watch比iPhone更加沉重。我试图在不同的线程,背景等上运行它无济于事。
我知道我可以将缓冲区发送到iPhone进行处理,但是如果我能从手表上严格读入缓冲区,我希望看到(即使需要更长的时间)。
答案 0 :(得分:0)
44.1kHz的5分钟单声道LPCM float32音频将是5 * 60 * 44100 * 4字节,或大约53MB。立体声的双倍。我不知道手表的内存限制是什么,但我认为你超过了它们。