在Linux中捕获/录制音频毫秒

时间:2015-04-24 05:01:31

标签: linux audio alsa

arecord -d 10 sample.wav

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

来自,

这里,在arecord中,对于duration(参数-d),只能使用秒。

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

我是否需要修改ALSA代码才能实现此目的?

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以使用我制作的代码。这是一个简单使用alsa的C程序。

https://github.com/Waxo/ALSA_encapsulation

答案 2 :(得分:1)

使用 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

答案 3 :(得分:0)

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

ALSACaptureSplitter -t 0.6 /tmp/test wav

此命令会将音频的600 ms音频保存到/ 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