Capture/Record 音频 Linux 毫秒

Capture/Record Audio in Linux for Milliseconds

arecord -d 10 sample.wav

此处,此命令将sample.wav录制为10秒的波形文件。

来自,

这里,在arecord中,持续时间(参数-d)只能使用second。

但是对于我的项目,我需要记录 600 毫秒或 2700 毫秒。这里,有没有办法用毫秒或者微秒?

我需要修改 ALSA 代码来实现吗?

您需要更改 arecord 的源代码(aplay.c 在 alsa-utils 包中)以更改 timelimit 变量的类型和解析。

你可以使用我制作的代码。简单使用alsa的C程序

https://github.com/Waxo/ALSA_encapsulation

使用ffmpeg,这里录制一个5ms的wav样本:

ffmpeg -y -loglevel panic -f alsa -ac 1 -ar 44100 -i hw:2 -t 0.05 volt.wav

-i参数的声卡列表:

arecord -l

奖金!分析样品峰:

sox -S volt.wav -n stats

您可以编译和使用 ALSACaptureSplitter 应用程序,将持续时间指定为浮点数 - 这将允许您指定您想要的任何精度。例如:

ALSACaptureSplitter -t 0.6 /tmp/test wav

此命令会将 600 毫秒的音频保存到 /tmp 目录中的各个文件。

您可以使用 this email 作为指南为您的系统构建应用程序。

这是 ALSACaptureSplitter 命令的帮助输出:

ALSACaptureSplitter -h
ALSACaptureSplitter : An application to capture input and save to independent files.
Usage:
     ALSACaptureSplitter [options] outFileNamePrefix ext
     e.g. ALSACaptureSplitter [options] /tmp/out wav
     -D : The name of the device : (-D hw:0)
     -c : The number of channels to open, if the available number is less, then it is reduced to the available : (-c 2)
     -t : The duration to sample for : (-t 2.1)
     -r : The sample rate to use in Hz : (-r 48000)
AUDIO FILE FORMATS:The known output file extensions (output file formats) are the following :
8svx aif aifc aiff aiffc al amb amr-nb amr-wb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms f32 f4 f64 f8 fap flac fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud mp2 mp3 nist ogg paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24 u3 u32 u4 u8 ub ul uw vms voc vorbis vox w64 wav wavpcm wv wve xa xi