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 进行处理,但是我想看看(即使需要更长的时间)我是否可以严格从手表读取缓冲区。

4

1 回答 1

1

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

于 2017-08-20T00:22:30.443 回答