Foobar 在 Linux Wine 中播放速度太快(脉冲音频 alsa 欠载错误)

Foobar 在 Linux Wine 中播放速度太快(脉冲音频 alsa 欠载错误)

当在繁重的 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"

笔记:

  1. wine-development 是 wine 的最新版。如果需要,可以安装它(它过去曾帮我解决过一​​些问题)。
  2. 我正在运行便携式 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。

相关内容