如何在使用 pulseaudio 时修复 aplay 的音频配置

如何在使用 pulseaudio 时修复 aplay 的音频配置

我想录制音频一个记录. 同上大胆工作正常。

因此在尝试录制记录

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 pulsearecord -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"
}

如果您遇到脉冲作为默认卡的问题,查看此帖子

相关内容