Max*_*cob 14 alsa audio recording
我在终端中使用 arecord 命令得到了一些混合结果。我使用的硬件包括用于 Raspberry Pi 的 Cirrus 声卡。我正在尝试将 24 位 192kHz 声音(来自板载 MIC)录制到 WAV 文件中,然后(通过耳机)播放它。首先,我确保启用麦克风和耳机:
$ ./Record_from_DMIC.sh
$ ./Playback_to_Headset.sh
Run Code Online (Sandbox Code Playgroud)
然后我尝试了多个命令,结果喜忧参半。
$ arecord -f S24_LE -r 192 -d 20 test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 192000 Hz, Mono
$ arecord: set_params:1087: Channels count non available
# So I set the number of channels to 1 (even though it is that, by default)
$ arecord -c 1 -f S24_LE -r 192 -d 20 test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 192000 Hz, Mono
arecord: set_params:1087: Channels count non available
Run Code Online (Sandbox Code Playgroud)
仍然得到同样的错误。我摆脱了速率(192kHz),并让它默认:
$ arecord -d 10 -c 1 -f S24_LE -t wav test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 8000 Hz, Mono
$ arecord: set_params:1087: Channels count non available
Run Code Online (Sandbox Code Playgroud)
仍然得到同样的错误。所以我只是使用了我在网上找到的命令的示例运行(http://linux.die.net/man/1/arecord):
$ arecord -d 10 -f cd -t wav test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Run Code Online (Sandbox Code Playgroud)
这奏效了。但显然使用了与我想要的不同的值。我在 192kHz 下也有问题:
$ aplay -c 1 -r 192000 test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Run Code Online (Sandbox Code Playgroud)
我尝试以 192kHz 播放,但它下降到 44.1kHz。有没有人知道为什么我会收到所有这些奇怪的错误和结果?
Max*_*cob 27
我发现了问题所在。该命令默认是因为我没有指定 2 通道(立体声)192kHz 音频输入。这是一个有效的命令示例:
$ arecord -f S24_LE -c 2 -r 192000 -d 20 test.wav
Run Code Online (Sandbox Code Playgroud)
这-c 2就是修复我的命令的原因。