【发布时间】:2019-09-26 03:46:21
【问题描述】:
我正在尝试在 NixOS 主机上配置默认音频设备。
我的 alsa 设备是这样的:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC1220 Digital [ALC1220 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
我没有 HDMI 或数字音频设备;我只想使用常规的 ALC1220 模拟设备。
我目前在我的环境中设置了AUDIODEV=hw:1,0(用于sox),并在我的vlcrc 中设置了alsa-audio-device=sysdefault:CARD=Generic。这行得通,但它显然是特定于用户和应用程序的,并且是声明性(声明性?)的痛苦。
似乎它应该是我可以在主机级别设置的东西,例如,通过设置
sound.extraConfig =
''
pcm.!default {
type hw
card Generic
}
'';
在我的 configuration.nix 中,或者可能配置 pulseaudio。
我在 NixOS Wiki(ALSA、Pulse)、ArchLinux、Pulse documentation 等其他网站以及 StackOverflow 等其他网站(例如stackexchange)上寻求帮助,但我可以找不到任何真正有效的东西。
我已经尝试过上述方法及其变体;并且还尝试了有和没有脉冲;但我没有发现任何有效的方法。
只要能够为该卡上的所有设备播放音频也将非常棒。
一如既往,任何指点都非常感激。
更新:这是我的 /etc/asound.conf
pcm_type.pulse {
libs.native = /nix/store/a3v4gh5lbb2g8fizq9xh8nbdp8qrvs6r-alsa-plugins-1.1.6/lib/alsa-lib/libasound_module_pcm_pulse.so ;
}
pcm.!default {
type pulse
hint.description "Default Audio Device (via PulseAudio)"
}
ctl_type.pulse {
libs.native = /nix/store/a3v4gh5lbb2g8fizq9xh8nbdp8qrvs6r-alsa-plugins-1.1.6/lib/alsa-lib/libasound_module_ctl_pulse.so ;
}
ctl.!default {
type pulse
}
(并且那个模块是真实的):
$ ls -l /nix/store/a3v4gh5lbb2g8fizq9xh8nbdp8qrvs6r-alsa-plugins-1.1.6/lib/alsa-lib/libasound_module_ctl_pulse.so
-r-xr-xr-x 1 root root 33512 Jan 1 1970 /nix/store/a3v4gh5lbb2g8fizq9xh8nbdp8qrvs6r-alsa-plugins-1.1.6/lib/alsa-lib/libasound_module_ctl_pulse.so
【问题讨论】:
-
尝试配置
sound.enable = true;和hardware.pulseaudio.enable = true;。删除sound.extraConfig。然后使用pavucontrol查看检测到哪些音频设备。 -
谢谢。所以实际上,我已经有了
sound.enable = true;和hardware.pulseaudio.enable = true;;并删除了 extraConfig。运行 pavucontrol 向我显示了一个设备 -Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo,带有端口线路输出(插入)和耳机(拔出)。尽管如此,在未设置 AUDIODEV 的情况下运行(比如)play会产生静默,而AUDIODEV=hw:1,0工作的地方(通过线路输出)。 -
嗯,也许你缺少一个 PulseAudio ALSA 插件。考虑发布您的
/etc/asound.conf。 -
好的,完成了。
-
嗯...好吧,尝试再次使用
play而不设置AUDIODEV,然后运行pavucontrol并转到“播放”选项卡。您看到列出的“ALSA 插件”了吗?也许你也有“系统声音”。如果您确实看到 ALSA 插件,那么它可能已静音。注意:应用程序需要产生音频(即使您听不到它)才能显示在“播放”选项卡中。
标签: audio alsa nix nixos pulse