Met*_*hic 2 audio linux skype pulse-audio alsa
如何将 PulseAudio 配置为仅使用单个 ALSA 设备进行输入和输出?
默认的 PulseAudio 配置会导致 PulseAudio 在启动时打开所有 ALSA 设备。这使得 PulseAudio 无法与其他 ALSA 客户端一起使用。与 ALSA 相比,许多人更喜欢 PulseAudio,但其他用户觉得它令人沮丧。不管是好是坏,PulseAudio 已经成为一种标准,一些流行的 Linux 应用程序,例如 Skype 和 Firefox,只支持通过 PulseAudio 输出音频。
一些用户更喜欢使用直接输出到 ALSA 的音频客户端,其他人则输出到另一个音频框架,如 JACK,但希望让 JACK 直接访问 ALSA。对于这些用户,通过卸载 PulseAudio 可以轻松释放所有 ALSA 设备。但是,删除 PulseAudio 会导致无法在 Skype 和 Firefox 中使用音频。
更好的解决方案是提出一种配置,使 PulseAudio 能够与其他 ALSA 客户端“很好地播放”,仅输出到在其配置中指定的单个设备,甚至只是 ALSAdefault
设备。我们怎么做?
这个答案建立在@dirkt 的答案之上,所以感谢他。
您可以编辑~/.config/pulse/default.pa
. 它列在“pulseaudio(1)”手册页的“文件”下。如果存在,default.pa
则不使用全局。对我来说,我可以通过以下最小配置获得工作设置:
load-module module-alsa-sink device=default
load-module module-alsa-source device=default
load-module module-native-protocol-unix
Run Code Online (Sandbox Code Playgroud)
但是,您可能需要查看/etc/pulse/default.pa
我系统上的全局版本,以查看此文件中还有什么内容。这里配置了各种花里胡哨的功能:恢复音量设置、发现蓝牙设备、与 JACK 接口、用户注销时自动退出守护程序等模块。如果您决定将全局文件复制到主目录并进行编辑,或者甚至直接编辑全局文件,则需要执行以下操作:
load-module module-udev-detect
,它会搜索 ALSA 硬件设备并覆盖您传递给上面 ALSA 模块的设备参数。module-alsa-sink
和module-alsa-source
行。该module-native-protocol-unix
行应该已经存在。load-module module-suspend-on-idle
;这给我在测试某些输出设备时带来了问题。症状是mplayer -ao pulse ...
报告“音频设备卡住了!” 并mpv -ao pulse ...
报告“[ao/pulse] 流被暂停。救助。” 注释掉那个模块解决了这个问题。如果您选择与device=default
上述不同的设备,例如两个单独的ALSA 设备用于录制和播放,那么根据我的经验,它将无法工作 -parecord
尝试从接收器设备而不是源设备进行录制。如果您已经通过 ALSA 为输入和输出配置了单独的设备,并且您希望它们由相同的 PCM device 命名,则需要将如下内容放入~/.asoundrc
:
pcm.!default { # "!" means "override" the previous definition
type asym
playback.pcm "hw4mix"
capture.pcm "hw:5"
}
Run Code Online (Sandbox Code Playgroud)
这里hw4mix
命名了之前在文件中定义的dmix 设备;whilehw:5
指定我的 USB 麦克风的硬件设备。这让 PulseAudio 很高兴。如果您想为 PulseAudio 客户端使用特殊设备,您可以将其命名为“special_pulseaudio_device”而不是“default”(当然也可以更新default.pa
以引用它)。
测试。使用pulseaudio -k
或killall pulseaudio
来终止当前的 PulseAudio 守护进程。然后再次启动它pulseaudio -vv
。当然,每次编辑~/.asoundrc
. 一旦你有一个工作设置,你可以尝试像pactl exit; pulseaudio --start
. 该--start
选项使其在后台运行,您将无法看到错误消息。
使用parecord -v t.wav
和paplay -v t.wav
来录制和播放 WAV 文件。您应该能够同时运行这些命令。
由于我使用dmix
设备进行播放,因此可以同时使用paplay
和aplay
,并且会自动进行混音。但是,无法在我的设置中共享麦克风;我无法arecord
在 PulseAudio 运行时使用它进行录制(“设备或资源繁忙”)。为此,我需要创建一个dsnoop
设备并将其名称放在hw:5
上面的位置。
如果您要让 Skype 正常工作,请使用 Skype“回声/声音测试服务”来测试您的设置。请记住,Skype 可能已经在后台运行 -killall skype
在启动它之前尝试,以强制它建立新的 PulseAudio 连接。根据我的经验,Skype 在无法连接到 PulseAudio 守护程序时不会报告任何类型的错误情况。
拥有良好的 ALSA 配置是可取的,即使只是因为某些应用程序(Ecasound?遗留代码?)不能与 PulseAudio 一起使用。我希望这些说明对那些根据自己的喜好配置了 ALSA,现在希望能够使用依赖于 PulseAudio 的 Skype 等程序的人有所帮助。
归档时间: |
|
查看次数: |
24713 次 |
最近记录: |