Nixos 默认音频设备
Posted
技术标签:
【中文标题】Nixos 默认音频设备【英文标题】:Nixos default audio device 【发布时间】: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 等其他网站以及 *** 等其他网站(例如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 插件,那么它可能已静音。注意:应用程序需要产生音频(即使您听不到它)才能显示在“播放”选项卡中。
【参考方案1】:
这个问题很可能是由于pulseaudio comandeering默认设备,尽管它在 ~/.asoundrc 中列出。
使用 alsa 钩子覆盖 pulse 对默认设备的命令的最佳解决方案。为此,请在顶部使用以下内容编辑您的 ~/.asoundrc:
@hooks [
func load
files [
"~/.asoundrc"
]
errors false
]
然后您可以根据需要添加默认设备,在您的情况下可能类似于以下内容:
pcm.!default
type hw
card "Generic"
ctl.!default
type hw
card "Generic"
【讨论】:
以上是关于Nixos 默认音频设备的主要内容,如果未能解决你的问题,请参考以下文章
如何使用默认输出设备作为使用 AudioGraph 录制音频的源?