如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

Hubro

有时我的USB头戴式受话器从输入设备列表中消失了。重新连接耳机不起作用,但是杀死Pulseaudio可以:

pulseaudio -k

当Pulseaudio启动备份时,我的USB耳机会同时显示在输入和输出设备下,并且工作正常。

问题在于,杀死Pulseaudio还会使使用它的所有应用程序崩溃,或者使它们没有声音。这意味着我必须重新启动Skype,Steam,XChat,任何正在运行的视频播放器(SMPlayer崩溃),任何正在运行的游戏等。

有没有一种方法可以在不终止正在运行的Pulseaudio实例的情况下强制重新加载所有设备?


有趣的是,当我通过重启Pulseaudio使USB耳机工作时,重新连接耳机将仅导致输出设备出现。我必须在连接耳机的情况下再次重新启动Pulseaudio才能显示输入设备。


编辑:pavuvontrol在“配置”下选中

截屏

重新启动Pulseaudio后,列表中将提供一个附加配置文件,该配置文件以“ + Digital Stereo Input”(或类似数字)结尾,并且默认情况下处于选中状态。

Juise

我已经经历了一段时间了同样的问题,终于有机会看到它。事实证明,负责音频设备的Pulseaudio模块的卸载和重新加载对我来说是可行的。

手动卸载和重新加载模块

在终端窗口中,输入命令

pacmd list-cards

从输出中找到缺少配置文件的音频设备。您可能会得到几张卡片,并且需要找到正确的卡片。我的看起来像这样:

[...]
index: 8
    name: <alsa_card.usb-Logitech_Logitech_USB_Headset-00-Headset>
    driver: <module-alsa-card.c>
    owner module: 27
    properties:
            alsa.card = "1"
            alsa.card_name = "Logitech USB Headset"
            [... more output ...]
[...]

从您的输出中,查找“所有者模块”行。那是您需要卸载的模块,但是您需要首先查看它的参数,以便您可以重新加载它。输入命令

pacmd list-modules

并找到驱动卡的模块。同样,在我的情况下,输出的相关部分看起来像这样(索引pacmd list-cards输出的所有者模块匹配):

[...]
index: 27
    name: <module-alsa-card>
    argument: <device_id="1" name="usb-Logitech_Logitech_USB_Headset-00-Headset" card_name="alsa_card.usb-Logitech_Logitech_USB_Headset-00-Headset" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1">
    used: 2
    load once: no
    properties:
    [... more output ...]
[...]

您将需要模块名称和参数来重新加载它。

要卸载模块,请输入命令(用输出中的适当值替换模块索引

pacmd unload-module module-index

要在模块卸载后重新加载,请输入命令

pacmd load-module module-name module-arguments

pacmd list-modules输出的值替换module-namemodule-arguments省略尖括号。

现在,应该重新加载该模块,如果运气好的话,您的耳机配置文件又回来了。

应用自动化

如果您需要经常重置设备,则上述步骤会很繁琐,因为模块索引不断变化,您每次都需要查找它。我为自己编写了一个shell脚本以使最糟糕的情况自动化:

#!/bin/bash

if [ -z "$1" ]; then
  echo "Pulseaudio has these cards:"
  pacmd list-cards | grep 'name: '
  exit 0
fi

MODULE_INDEX=`pacmd list-modules | tac | grep -A 10 -e "argument: .*$1" | grep 'index:' | head -n 1 | cut -d ':' -f 2 | tr -d ' '`
MODULE_NAME=`pacmd list-modules | tac | grep -A 10 -e "argument: .*$1" | grep 'name:' | head -n 1 | cut -d ':' -f 2 | tr -d '<>'`
MODULE_ARGUMENTS=`pacmd list-modules | tac | grep -e "argument: .*$1" | head -n 1 | cut -d ':' -f 2 | tr -d '<>'`
echo "Module index is $MODULE_INDEX"
echo "Module name: $MODULE_NAME"
echo "Module args: $MODULE_ARGUMENTS"

if [ -z "$MODULE_INDEX" ]; then echo "Could not find module index"; exit 0; fi
if [ -z "$MODULE_NAME" ]; then echo "Could not find module name"; exit 0; fi
if [ -z "$MODULE_ARGUMENTS" ]; then echo "Could not find module arguments"; exit 0; fi

echo "Unloading module"
pacmd unload-module $MODULE_INDEX
echo ""
echo "Reloading module"
pacmd load-module $MODULE_NAME $MODULE_ARGUMENTS
echo ""

在不带参数的情况下运行时,脚本会列出Pulseaudio知道的卡。当提供卡名的一部分作为参数时,脚本将尝试卸载并重新加载相关的Pulseaudio模块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

来自分类Dev

如何在不重新启动nvim的情况下获取neovim配置文件?

来自分类Dev

如何在不重新启动应用程序的情况下重新配置Serilog?

来自分类Dev

如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

来自分类Dev

如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

来自分类Dev

如何在不重新启动vim的情况下重新加载.vimrc文件?

来自分类Dev

如何在不重新安装.xcodeproj的情况下延长配置文件的日期

来自分类Dev

如何在不重新启动MATLAB的情况下重新编译模型DLL?

来自分类Dev

Jrebel / SBT如何在不重新启动的情况下重新编译Webapp

来自分类Dev

如何在不重新启动的情况下重新加载/ etc / environment?

来自分类Dev

如何在不重新启动的情况下重新加载udev规则?

来自分类Dev

如何在不重新启动的情况下强行重新安装设备?

来自分类Dev

如何在不重新启动的情况下启动Cron作业?

来自分类Dev

如何在不重新启动整个容器的情况下重新启动Docker容器上的Node?

来自分类Dev

重新启动Android SystemUIService后,如何在不重新启动的情况下刷新墙纸图像?

来自分类Dev

如何在不重新安装软件包的情况下删除软件包的配置文件

来自分类Dev

如何在不重新启动活动的情况下切换主题(夜间模式)?

来自分类Dev

如何在不重新启动cassandra节点的情况下重建sstable?

来自分类Dev

Kubernetes:如何在不重新启动Pod的情况下更新Pod的资源限制/请求?

来自分类Dev

如何在不重新启动应用程序的情况下获取StackOverflowError的完整stacktrace

来自分类Dev

如何在不重新启动的情况下使用SEE_MASK_NOZONECHECKS运行MSI

来自分类Dev

如何在不重新启动的情况下检测连接的新硬盘?

来自分类Dev

如何在不重新启动的情况下查看ubuntu中的grub内核

来自分类Dev

如何在不重新启动(kpartx)的情况下使用新的fdisk表?

来自分类Dev

如何在不重新启动的情况下卸载Process Monitor驱动程序?

来自分类Dev

如何在清除后不重新启动Nginx的情况下恢复Nginx缓存

来自分类Dev

如何在不重新启动Windows的情况下清除屏幕瑕疵(多个版本)

来自分类Dev

如何在不重新启动的情况下禁用SELinux?

来自分类Dev

如何在不重新启动explorer.exe的情况下刷新桌面?

Related 相关文章

  1. 1

    如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

  2. 2

    如何在不重新启动nvim的情况下获取neovim配置文件?

  3. 3

    如何在不重新启动应用程序的情况下重新配置Serilog?

  4. 4

    如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

  5. 5

    如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

  6. 6

    如何在不重新启动vim的情况下重新加载.vimrc文件?

  7. 7

    如何在不重新安装.xcodeproj的情况下延长配置文件的日期

  8. 8

    如何在不重新启动MATLAB的情况下重新编译模型DLL?

  9. 9

    Jrebel / SBT如何在不重新启动的情况下重新编译Webapp

  10. 10

    如何在不重新启动的情况下重新加载/ etc / environment?

  11. 11

    如何在不重新启动的情况下重新加载udev规则?

  12. 12

    如何在不重新启动的情况下强行重新安装设备?

  13. 13

    如何在不重新启动的情况下启动Cron作业?

  14. 14

    如何在不重新启动整个容器的情况下重新启动Docker容器上的Node?

  15. 15

    重新启动Android SystemUIService后,如何在不重新启动的情况下刷新墙纸图像?

  16. 16

    如何在不重新安装软件包的情况下删除软件包的配置文件

  17. 17

    如何在不重新启动活动的情况下切换主题(夜间模式)?

  18. 18

    如何在不重新启动cassandra节点的情况下重建sstable?

  19. 19

    Kubernetes:如何在不重新启动Pod的情况下更新Pod的资源限制/请求?

  20. 20

    如何在不重新启动应用程序的情况下获取StackOverflowError的完整stacktrace

  21. 21

    如何在不重新启动的情况下使用SEE_MASK_NOZONECHECKS运行MSI

  22. 22

    如何在不重新启动的情况下检测连接的新硬盘?

  23. 23

    如何在不重新启动的情况下查看ubuntu中的grub内核

  24. 24

    如何在不重新启动(kpartx)的情况下使用新的fdisk表?

  25. 25

    如何在不重新启动的情况下卸载Process Monitor驱动程序?

  26. 26

    如何在清除后不重新启动Nginx的情况下恢复Nginx缓存

  27. 27

    如何在不重新启动Windows的情况下清除屏幕瑕疵(多个版本)

  28. 28

    如何在不重新启动的情况下禁用SELinux?

  29. 29

    如何在不重新启动explorer.exe的情况下刷新桌面?

热门标签

归档