Lui*_*ado 4 wine pulseaudio 11.10
我已经阅读了很长一段时间关于 Ubuntu 中的 wine 和 pulseaudio 的几个问题,但从来没有清楚地理解它。有什么问题或似乎是与 wine 相关的问题,以及在通过 wine 执行的游戏中默认使用pulseaudio来处理声音的问题。这会影响使用 Ubuntu 但仍希望能够玩特定 Windows 游戏的所有用户。
Oli*_*Oli 12
最新更新: Wine 1.7.55 添加了适当的 PulseAudio 支持。
这些天都没有太大的问题。
你描述的是几年前的。
Wine 下的应用程序只知道如何与 Windows 声音堆栈对话,因此与大多数其他 Windows 子系统一样,Wine 提供了这一点。问题来自我们的声音堆栈在过去十年中发生了显着变化。
...我们只有 OSS 和 ALSA。它们提供可预测的接口,但它们不容易编码。在 ALSA 的支持下,Wine 花了很长时间才达到“正常工作”的程度。堆栈图非常简单:
Hardware ? ALSA ? Wine/Win32-api ? Windows app
Run Code Online (Sandbox Code Playgroud)
ALSA 的主要问题是,如果您想要同时播放不止一件东西,它是出了名的挑剔。应用程序可能会意外地将其锁定以防止他人使用。
突然间,每个桌面都有一个叫做 PulseAudio 的东西。它是应用程序和 ALSA之间的另一层,允许许多应用程序同时发出噪音并添加网络声音等功能。
但是 Wine 仍然只知道如何与 ALSA 交谈,而且现在这个 PulseAudio 东西从启动就占据了它。Wine 的音频必须通过ALSA 兼容层传输到 PulseAudio,然后再返回到 ALSA。堆栈显示这看起来有多可怕:
Hardware ? ALSA ? PulseAudio ? ALSA emulator ? Wine/Win32 ? Windows app
Run Code Online (Sandbox Code Playgroud)
此外,ALSA 仿真层(由 PulseAudio 提供)也不是很好。它将支持几个通道和一些录音选项,但远不及 PulseAudio 本身所依赖的 ALSA。
Wine 中的音频不起作用。事后看来很容易看出问题究竟出在哪里,但当时有三种意见使 Wine 成为真正的战场:
用户呼吁 Wine 开发人员添加本机 PulseAudio 驱动程序。
Wine 开发人员不明白为什么他们应该花另一个年龄(我们说的是开发人员的时间是几个月又几个月)来与另一个音频层接口,因为他们认为这是 PulseAudio 没有提供有效的 ALSA 接口的问题。在他们看来,人们可以只用pasuspender让 PA 释放较低级别的 ALSA 进行直接操作。
PulseAudio 开发人员还建议 Wine 应该抽出他们的集体手指,只添加一个 PA 驱动程序。数十个其他应用程序具有,为什么它们不能呢?每次我询问时,PulseAudio ALSA 层都很好,没有错误,只是 Wine 开发人员自己的错误才是问题所在。
一位用户编写了一个被入侵的 PulseAudio 驱动程序,该驱动程序直接与 Pulseaudio 对话并自行进行位图音频转换。其他用户喜欢它,因为尽管它被黑客攻击,但它确实经常“正常工作”,但 Wine 开发人员讨厌它,因为它是另一个需要维护的大型代码分支,而且它是一个黑客攻击。
每个人都给了一点。
用户不再抱怨。
Wine 重构为使用 Windows Vista 和 Windows 7 的声音方法。他们称之为 MMDevAPI。您可以在此处阅读有关 MMDevAPI 的所有信息。这去除了大量的声音代码并简化了设置。不过它仍然使用 ALSA。
PulseAudio 修复了错误以使 Wine 更好地工作。
当 MMDevAPI 开始显示它可以工作时,WinePulse 的开发就停止了。
虽然看起来像是这样,但我怀疑这不是故事的结局。有商业支持的项目,如 OpenAL 和 GStreamer,可以真正简化 Wine 的声音堆栈并提供额外的功能。
我多年来一直在写这篇文章,这可能是迄今为止最奇怪的事情。在放弃 PA 驱动程序开发之后,似乎有人回到了这一点并将其变成了真实的东西。
不仅如此,它还被引入到 Wine 的主线版本中。
在一个既定的前缀,只需运行wine regedit和变化HKCU\Software\Wine\Drivers\Audio,从alsa到pulse。一切——包括环绕声——似乎都有效。现在是堆栈:
Hardware ? ALSA ? PulseAudio ? Wine/Win32-api ? Windows app
Run Code Online (Sandbox Code Playgroud)
它比 ALSA 兼容层更好吗?我仍然不确定。我已经尝试了我认为是一些错误的游戏,但它们仍然略有跳过。
虽然它可以工作,这是主要的事情......但最终 ALSA 包装器也是如此。
| 归档时间: |
|
| 查看次数: |
4228 次 |
| 最近记录: |