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 МБ. Удвойте это для стерео. Я не знаю, каковы пределы памяти часов, но я думаю, что вы превышаете их.

Другие вопросы по тегам