我想录制音频一个记录. 同上大胆工作正常。
因此在尝试录制记录:
arecord -f dat -d 5 -D plughw:0,0 /tmp/test.wav
失败并显示消息:arecord: main:788: audio open error: No such file or directory
我尝试简单地播放音频:at /dev/random | aplay -f S16_LE
也失败了
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
aplay: main:788: audio open error: No such file or directory
…我做错了什么;或者是脉冲音频问题以某种方式运行吗?
我的设备列表arecord -L
:
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=PCH
HDA Intel PCH, ALC269VB Analog
Default Audio Device
sysdefault:CARD=PCH
HDA Intel PCH, ALC269VB Analog
Default Audio Device
front:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Front speakers
dmix:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Direct sample snooping device
hw:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Hardware device with all software conversions
alsamixer
“列表”(使用 F6):
- default
0 HDA Intel HDMI
1 HDA Intel PCH
答案1
Pulseaudio 会抓取所有可用的 ALSA 硬件设备。这意味着只要 Pulseaudio 运行,您就无法从 录制,也无法hw:...
播放plughw:...
。
但是,Pulseaudio 的常见配置包括 ALSA 应用程序的兼容层。它看起来类似于
pcm.!default pulse
ctl.!default pulse
在您的~/.asoundrc
(或系统范围的设置中)。
这意味着所有使用 ALSA 的应用程序都default
将被重定向到 Pulseaudio,并可以通过pavucontrol
等方式选择设备。
因此: (1) 要么使用arecord -D pulse
,arecord -D default
要么类似 ,要么 (2)parecord
首先使用 ,要么 (3) 停止 Pulseaudio 或使用pasuspender
。
答案2
通常在 pulseaudio 运行时,您可以使用 pulse 设置的音频设备,只要它不同时使用它们(不以任何方式使用 dsnoop 进行录制)。
您可以使用 arecorder -l 而不是 arecord -L 查看可用的子设备。但是,假设 hw:0,0 是正确的录音设备,那么;我的解决方案是首先暂停脉冲音频,如下所示:pasuspender -- arecord -f dat -d 5 -D plughw:0,0 /tmp/test.wav
如果您确认此方法有效,则可以修改 ~/.asoundrc 以切换默认设备。在带有脉冲音频的操作系统上切换默认设备可能比较棘手。如果您想要一个切换命令行和通用 ALSA 应用程序的默认设备的工作示例,则可以将以下内容放入 ~/.asoundrc 文件中(更改您的卡名称以匹配您选择的名称):
pcm.!default {
type hw
card "PCH"
}
ctl.!default {
type hw
card "PCH"
}
如果您遇到脉冲作为默认卡的问题,查看此帖子。