在 Debian 和 Ubuntu 等衍生产品中存在一个长期存在的声音问题,其中第一次将曲目播放到数字,例如:HDMI 输出错过了前一秒或两秒,或者以低音量“闷闷不乐”地播放短声音,或者无法播放播放很短的声音。随后的播放通常会没问题,至少在接下来的 5 秒到 20 分钟内 - 然后问题再次出现。所有声音应用程序和文件类型都会发生这种情况。因为它对最短声音的影响最差,所以对于桌面警报或“事件”声音以及终端铃声(Xfce 中的另一个蠕虫罐)尤其烦人。可以通过注销并重新登录来强制执行此问题,或者如果您的机器连接到 KVM,可能只需将 KVM 切换到另一台机器然后再返回即可。自从 Debian 6 Squeeze 到 Xubuntu 20.04 LTS 以来,我一直有这个,在几台机器上,包括英特尔和 AMD 芯片组。这不是 PulseAudio - Debian 机器只使用 ALSA,没有 PulseAudio。它存在于带有 Gnome 2 的 Debian、带有 Gnome 3 的 Ubuntu 和 Xubuntu (Xfce 4) 中。模拟输出不受影响。
背景 许多人似乎已经通过各种方法解决了类似的问题,以禁用英特尔 HDA 驱动程序的“省电”功能,但它们对我不起作用。该问题似乎与播放开始/结束时的点击或弹出有关 - 我不明白。但是,我的问题似乎也是由于启动音响系统的延迟造成的。其他人通过播放连续静音以保持系统开启来解决此问题,例如:声音输出开始延迟和https://unix.stackexchange.com/questions/362223/short-audio-playback-is-muted-requires-warming-up -or-secondary-audio-in-backgro - 但这又对我不起作用。
在 Debian、Ubuntu 和 Xubuntu 上什么对我有用
aplay
)或 .ogg(由 播放paplay
)。通过注销+登录进行测试,然后执行:-$ aplay path/to/inaudible.wav; paplay /usr/share/sounds/freedesktop/stereo/bell.oga
如果“铃声”警报声在“听不见”之后正常播放,那么它就成功了。
然后可以将其放入守护程序脚本中,例如:(由 root 用户)
/usr/local/bin/SoundKeepAlive.sh
每 4 秒重复一次:-确保这是可执行的。
然后可以通过创建启动/自动启动作业在图形登录时自动启动守护程序:- Xfce:应用程序 > 设置 > 会话和启动 > Appn 自动启动;或 Gnome 3:应用程序 > 启动应用程序,使用以下命令:
bash -c "/usr/local/bin/SoundKeepAlive.sh"
注销并登录。然后执行
$ ps -fwe | grep SoundKeepAlive | grep -v grep
此操作应显示正在运行的守护进程的进程。$ paplay /usr/share/sounds/freedesktop/stereo/bell.oga
现在应该可以正常播放了。如果这需要为多个用户运行,请将自动启动“桌面”文件移动(以 root 身份)
~/.config/autostart/SoundKeepAlive.desktop
并/etc/xdg/autostart/
更改其权限以匹配那里的其他用户。关于进一步测试的最后一点说明:在登录和注销(或通过 KVM 切换)后等待 5 秒再进行测试,以确保守护程序至少触发了一次。
创建“听不见”的声音文件
我使用了https://audio-joiner.com/站点(其他可用),并从
/usr/share/sounds/gnome/default/alerts/sonar.ogg
该站点不适用于“ogg”格式,因此我首先创建了一个 wav:-
我上传了 sonar.wav,然后将左端滑块移动到大约一半(以获得最低音量的声音内容)。然后我使用音频工具 > 更改音量将音量降低 90%,使其听不见。我将其下载为“inaudible.wav”。我还制作了一个 ogg 版本:-
这个文件第一次对我有用,但如果不是,可能需要试验持续时间和音量。我把它(作为根)放入
/usr/local/share/sounds/
所有用户。我能够用
aplay /dev/zero
(optional-f cd
) 解决这个问题,只是让那个“播放”一个空的十六进制 00 流。仅此一项就足以防止短声音播放被切断和长音轨的开始。