【问题标题】:Nixos default audio deviceNixos 默认音频设备
【发布时间】: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(ALSAPulse)、ArchLinuxPulse 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


【解决方案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"
}

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2021-07-27
    • 2020-04-11
    相关资源
    最近更新 更多