AVAudioPCMBuffer - чтение (в буфер: AVAudioPCMBuffer) сбой памяти? (переполнение буфера)
Следующий код работает для коротких звуковых файлов на всех моих устройствах (iPhone, Apple Watch, Simulator):
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 для обработки, однако я хотел бы увидеть (даже если это займет немного больше времени), могу ли я считать данные в буфере строго из часов.
1 ответ
5 минут монофонического звука LPCM float32 с частотой 44,1 кГц будут составлять 5*60*44100*4 байта или около 53 МБ. Удвойте это для стерео. Я не знаю, каковы пределы памяти часов, но я думаю, что вы превышаете их.