Запись AVAudioPCMBuffer в сжатый AVAudioFileIOS

Программируем под IOS
Ответить
Anonymous
 Запись AVAudioPCMBuffer в сжатый AVAudioFile

Сообщение Anonymous »

Мы работаем над приложением, которое записывает и сохраняет входные данные микрофона. Использование AVAudioRecorder не представлялось возможным, поскольку необходима обработка звука в реальном времени.

Код: Выделить всё

AVAudioEngine
используется, поскольку обеспечивает низкоуровневый доступ к входному аудио.

Код: Выделить всё

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])
})
Наша проблема в том, что запись довольно большая. Для 5-часовой записи размер выходного аудиофайла составляет 1,2 ГБ в формате .caf.

Код: Выделить всё

let audioFile = AVAudioFile(forWriting: recordingPath, settings: [:], commonFormat: .pcmFormatFloat32, interleaved: isInterleaved)
Есть ли хороший способ сжать записываемый в него аудиофайл?

Частота дискретизации по умолчанию — 44100 Гц . Мы будем использовать AVAudioMixerNode для понижения входной частоты до 20 кГц (в нашем случае приемлемо более низкое качество), но размер выходного сигнала будет неприемлемым.

Запись содержит большие фрагменты фонового шума.

Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/521 ... compressed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»