当在繁重的 CPU 和文件传输负载(如 rsync)下运行多个应用程序时,foobar 开始播放得非常快(如 10 倍速度)。
答案1
它可能看起来很长而且很复杂,但实际上只是编辑两行文本。
摘要版本:
打开文件
$ nano ~/.config/pulse/daemon.conf
编辑/添加以下两行
default-fragments = 10
default-fragment-size-msec = 1000
重新启动 pulseaudio
$ pulseaudio --kill && systemctl --user stop pulseaudio.socket && systemctl --user stop pulseaudio.service && sleep 2 && pulseaudio --start
重启 foobar。完成。
长版本:
故障排除:
从终端运行它来检查错误(编辑路径到你的):
$ wine-development start /unix "/media/user/drive/foobar2000/foobar2000.exe"
笔记:
- wine-development 是 wine 的最新版。如果需要,可以安装它(它过去曾帮我解决过一些问题)。
- 我正在运行便携式 foobar,这就是它不在 Program Files 文件夹中的原因。
现在,如果您在终端中看到类似以下错误:
ALSA lib pcm.c:8526:(snd_pcm_recover) underrun occurred
这可以解决。 我们只需要在 daemon.conf 中更改/添加两行。
检查主目录是否
~/.config/pulse/daemon.conf
存在。
如果没有,请从 etc 复制
$ cp /etc/pulse/daemon.conf ~/.config/pulse/daemon.conf
在 daemon.conf 中添加/编辑以下两行
default-fragments = 10
default-fragment-size-msec = 1000
即,pulseaudio 预处理了 10 个 1000ms 的音频。这应该可以解决最重的负载问题。如果需要,可以将其减少到所需的最小值。增加它应该会增加延迟,但我一直保持这个状态,没有遇到任何延迟问题。
现在重新启动脉冲:
首先检查其进程 ID,以便我们查看它是否确实重新启动。重新启动脉冲有时会出现问题,如果以下操作失败,您可能需要重新启动电脑。
$ ps cax | grep pulseaudio
输出
967930 ? S<l 0:00 pulseaudio
这个数字是变化的。
现在重新启动脉冲
$ pulseaudio --kill && systemctl --user stop pulseaudio.socket && systemctl --user stop pulseaudio.service && sleep 2 && pulseaudio --start
现在再次检查进程 ID
$ ps cax | grep pulseaudio
输出
1008985 ? S<l 0:00 pulseaudio
数字有变化吗?如果是,则重启有效。如果没有,则必须重启电脑。
重新启动 foobar(否则它将无法播放)
$ kill -9 $(pgrep foobar2000) && wine-development start /unix "/media/user/drive/foobar2000/foobar2000.exe"
看看音频播放是否流畅(一些欠载错误是可以的)。
笔记:
如果在播放音频时在 foobar 内运行压缩,上述方法可能不起作用。在这种情况下,最好同时运行另一个 foobar,并在一个 foobar 中进行压缩,在另一个 foobar 中进行收听。这是因为 foobar/wine 不擅长多线程。为此请使用 foobar portable。