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


3

对于科学实验,我们尝试使用创建大型(7天)录音 arecord 来自alsa的RasPi使用USB麦克风。录音管道如下:

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上运行,RasPi3也在做其他事情(即不应该占用太多的系统资源)。

目前,我们正在考虑录制成原始数据格式,然后在另一台机器上重新编码为wav,或者即时重新编码到FLAC,但任何更简单的解决方案都将受到赞赏。


raw-to-wav不是重新编码,而是添加标题。在任何情况下,无论您如何创建大小超过2 GB的大小,都不会指定.wav文件。
CL.

Answers:


1

最后,我最终使用了“encode to 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和gzipping整个事情 - 这是由于您可能没有特殊要求。如果要跳过该步骤,请替换 -c 用一个 -o filename.flac。这也将摆脱 stdout版本可能会导致一些问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.