Мы работаем над приложением, которое записывает и сохраняет вход микрофона. Использование avaudiorecorder < /code> не было вариантом, потому что необходима обработка звука в реальном времени. < /P>
AVAudioEngine< /code> используется, потому что он обеспечивает низкоуровневый доступ к вводу аудио. < /p>
let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode
let inputFormat = inputNode.inputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: AVAudioFrameCount(inputFormat.sampleRate * sampleInterval), format: inputFormat) { (buffer: AVAudioPCMBuffer, time: AVAudioTime) -> Void in
// sound preprocessing
// writing to audio file
audioFile.write(buffer.floatChannelData![0])
})
< /code>
Наша проблема заключается в том, что запись довольно большая. Для 5 -часовой записи выходной аудиофайл составляет 1,2 ГБ с .caf < /code> Format. < /P>
let audioFile = AVAudioFile(forWriting: recordingPath, settings: [:], commonFormat: .pcmFormatFloat32, interleaved: isInterleaved)
< /code>
Есть ли хороший способ сжатия аудиофайла на него? Мы будем использовать avaudiomixernode для погружения в вход до 20 кГц (более низкое качество приемлемо в нашем случае), но размер выхода не будет приемлемым по размеру. < /P>
Запись содержит большие сегменты фонового шума.>
Подробнее здесь: https://stackoverflow.com/questions/521 ... compressed