Для научного эксперимента, мы пытаемся создать большую (7 дня) аудиозапись с помощью arecord
из ALSA на RasPi с помощью микрофона USB. Конвейер для записи выглядит следующим образом:
arecord -f S16_LE -r16000 -d 259200 -D sysdefault:CARD=1 | gzip > test.wav.gz
При такой записи запись воспроизводимо заканчивается ровно через 18 ч 38 м 28 с. Вероятно, это связано с максимальным размером файла wav, равным 2 ГБ, о котором говорит параметр --max-file-time
на странице руководства, поскольку размер файла несжатого файла wav в этот момент составляет почти 2 ГБ.
Поскольку нам нужно передать аудиоданные в gzip (и, на более позднем этапе, в GPG), не сохраняя их сначала на диск, мы не можем использовать автоматическое разбиение файлов, предлагаемое ALSA, чтобы обойти это (по крайней мере, мы не знаем о каких-либо способ объединить это с трубами). Есть ли способ обойти эту проблему таким образом, чтобы выполнялись следующие условия:
- В записи нет перерыва (остановка и перезапуск записи не будут работать для нас, так как нам нужна одна непрерывная 7-дневная запись без пропусков).
- В идеале, полученный формат должен быть .wav (или, по крайней мере, что-то похожее без потерь).
- Размер файла не должен сильно увеличиваться (нам нужна частота дискретизации ~ 16 Кбайт, монозвук, и у нас есть примерно 20 ГБ свободного места).
- Все это должно работать на RasPi3, который также выполняет некоторые другие действия (т.е. не должен занимать слишком много системных ресурсов).
В настоящий момент мы рассматриваем возможность записи в необработанный формат данных и последующего перекодирования в wav на другом компьютере или перекодирования в FLAC на лету, но было бы полезно любое более простое решение.