所以我有一台运行 Linux Mint 的计算机,为了播放无损音频文件,我使用 DeaDBeeF,我将其配置为不使用 ALSA 上采样,以便收听允许我的外部音频接口(Musical Fidelity V-Link)处理不同的比特率。
我已经习惯了它的副作用,即操作系统不能同时使用该卡进行一般声音输出,而且我实际上更喜欢将声卡保留,从而阻挡任何其他应用程序的声音。
我遇到的问题是,有时我无法开始播放任何歌曲,就好像声卡正在被使用一样,尽管我听不到任何输出并关闭了所有可能保留声卡的应用程序。
奇怪的是,断开并重新连接接口,或在系统音频设置中设置另一个输出设备似乎都无法解决问题,因此每次出现问题时,这都迫使我重新启动计算机。
虽然解决问题本身很方便,但作为一名 Linux 爱好者,我不仅渴望了解如何解决这个问题,还渴望了解问题的原因以及可能的其他调试方法。
如果我从终端运行 deadbeef,我会出现以下错误:
convgui: gtkui plugin not found
plugin Converter GTK3 UI failed to connect to dependencies, deactivated.
plugin Playlist browser GTK3 failed to connect to dependencies, deactivated.
shellexecui: can't find gtkui plugin
plugin Shellexec GTK3 UI failed to connect to dependencies, deactivated.
gtkui plugin compiled for gtk version: 2.16.0
connecting button tray signals
could not open audio device (Device or resource busy)
could not open audio device (Device or resource busy)
streamer: failed to start playback (start track)
这支持了我关于资源(音频接口)被保留的理论,但我不知道如何进一步调查该问题,而且我不明白为什么使用不同的全局音频设置(即告诉操作系统使用内置音频)重新连接卡不能解决这个问题。
据我了解,所有应用程序都发布到 ALSA,因此 ALSA 应该是唯一使用该接口的程序。
如能提供关于如何进一步调查或解决该问题的任何指点,我们将不胜感激。以下是我配置 deadbeef 的截图
答案1
要找出哪些进程正在访问声音设备,请运行:
lsof /dev/snd/*
或者:
fuser /dev/snd/*
(fuser
仅显示 PID,不显示名称,但有一个--kill
选项……)