arecord -d 10 sample.wav
在這裏,該命令將記錄sample.wav作爲10秒的波形文件。在Linux中捕獲/記錄音頻數毫秒
從,
在此,在的arecord,對於持續時間(參數-d)僅次於可以使用。
但是對於我的項目,我需要記錄600毫秒或2700毫秒。在這裏,有什麼方法可以使用毫秒或微秒?
我需要修改ALSA代碼來實現嗎?
arecord -d 10 sample.wav
在這裏,該命令將記錄sample.wav作爲10秒的波形文件。在Linux中捕獲/記錄音頻數毫秒
從,
在此,在的arecord,對於持續時間(參數-d)僅次於可以使用。
但是對於我的項目,我需要記錄600毫秒或2700毫秒。在這裏,有什麼方法可以使用毫秒或微秒?
我需要修改ALSA代碼來實現嗎?
您需要更改arecord的源代碼(alsa-utils包中的aplay.c
)以更改timelimit
變量的類型和解析。
您可以使用我所做的代碼。這是一個簡單地使用alsa的C程序。
隨着的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
良好的資源。這裏面臨的小問題,alsa_control * AC =新alsa_control(44100,4096,16,MONO)工作正常。但新的alsa_control(44100,4096,16,STEREO)給出了「分段錯誤」。我該如何解決這個問題? –
是的,我錯了,我犯了一個錯誤。在alsa_control.cpp 'snd_pcm_uframes_t尺寸153線=本 - > _ period_size * 2;'應該是'snd_pcm_uframes_t大小=本 - > _ period_size * 2 * this._stereo_mode;'弄不好COMMITED – Waxo
工作!通過改變爲snd_pcm_uframes_t大小=此 - > _ period_size * 2 *本 - > _ stereo_mode;感謝您的幫助。 –