arecord:创建大型(7 天)音频录音

arecord:创建大型(7 天)音频录音

为了进行科学实验,我们尝试使用arecordUSB 麦克风在 RasPi 上使用 alsa 创建大型(7 天)音频记录。录音流程如下:

arecord -f S16_LE -r16000 -d 259200 -D sysdefault:CARD=1 | gzip > test.wav.gz

以这种方式录制时,录音会在 18 小时 38 分 28 秒后重复结束。这可能与 2 GB 的最大 wav 文件大小有关。--max-file-time参数在手册页中讨论,因为未压缩的 wav 文件此时的大小几乎正好是 2 GB。

由于我们需要将音频数据通过管道传输到 gzip(以及稍后的 GPG)中,而无需先将其保存到磁盘,因此我们无法使用 ALSA 提供的自动文件分割来解决这个问题(至少我们不知道有任何方法可以将其与管道相结合)。有没有办法在满足以下条件的情况下解决这个问题:

  • 录音中没有间隙(停止并重新开始录音对我们来说不起作用,因为我们需要连续 7 天没有任何间隙的录音)。
  • 理想情况下,生成的格式仍应为 .wav(或者至少是类似的无损格式)。
  • 文件大小不应增加太多(我们需要~16k 采样率、单声道,并且我们有大约 20 GB 的可用空间)。
  • 整个程序应该在 RasPi3 上运行,同时还可以执行一些其他操作(即不应占用太多系统资源)。

目前,我们正在考虑录制成原始数据格式,然后在另一台机器上重新编码为 wav,或者动态重新编码为 FLAC,但如果有任何更简单的解决方案,我们将不胜感激。

答案1

最后,我最终使用了“编码为 flac”解决方案。这是我使用的命令链:

arecord -t raw -f S16_LE -r16000 -d 604800 -D sysdefault:CARD=1 | flac - -f --endian little --sign signed --channels 1 --bps 16 --sample-rate 16000 -s -c | gzip > test.flac.gz

(根据您的需要定制 arecord 和 flac 命令)

请注意,我现在正在将整个内容通过管道传输到 stdout 并对其进行 gzip 压缩 - 这是由于您可能没有的特殊要求。如果您想跳过该步骤,请将 替换为-c-o filename.flac这还将摆脱标准输出版本可能引起的一些问题

相关内容