2015-04-24 31 views
0
arecord -d 10 sample.wav 

在這裏,該命令將記錄sample.wav作爲10秒的波形文件。在Linux中捕獲/記錄音頻數毫秒

從,

在此,在的arecord,對於持續時間(參數-d)僅次於可以使用。

但是對於我的項目,我需要記錄600毫秒或2700毫秒。在這裏,有什麼方法可以使用毫秒或微秒?

我需要修改ALSA代碼來實現嗎?

回答

1

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

1

您可以使用我所做的代碼。這是一個簡單地使用alsa的C程序。

https://github.com/Waxo/ALSA_encapsulation

+0

良好的資源。這裏面臨的小問題,alsa_control * AC =新alsa_control(44100,4096,16,MONO)工作正常。但新的alsa_control(44100,4096,16,STEREO)給出了「分段錯誤」。我該如何解決這個問題? –

+0

是的,我錯了,我犯了一個錯誤。在alsa_control.cpp 'snd_pcm_uframes_t尺寸153線=本 - > _ period_size * 2;'應該是'snd_pcm_uframes_t大小=本 - > _ period_size * 2 * this._stereo_mode;'弄不好COMMITED – Waxo

+0

工作!通過改變爲snd_pcm_uframes_t大小=此 - > _ period_size * 2 *本 - > _ stereo_mode;感謝您的幫助。 –

0

隨着的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