PulseAudio 重建后,回声消除功能不再起作用

PulseAudio 重建后,回声消除功能不再起作用

我使用的是 Ubuntu 14.04.5,在从源代码重建 PulseAudio 时遇到了麻烦。这里的 PulseAudio 是 4.0-0ubuntu11.1,但我需要重建它并包含最新的补丁https://patchwork.freedesktop.org/patch/65100/从而改进了echo-cancel模块。

我尝试按照 Ubuntu 社区文档中的说明重建 PAhttps://help.ubuntu.com/community/UpdatingADeb。即apt-get build-dep ...,,,,,,apt-get source ...。构建成功,只有一个错误 - “pulseaudio:postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/pulseaudio”,但我认为应该忽略它。然后我使用安装了构建的软件包patch ...,尝试启动 PA 并出现以下错误:debchange -idpkg-source --commitdebuild -us -uc -i -Idebi

$ pulseaudio -vvv
<...>
D: [pulseaudio] module-systemd-login.c: Added new session c2
I: [pulseaudio] module.c: Loaded "module-systemd-login" (index: #14; argument: "").
I: [pulseaudio] module.c: Loaded "module-position-event-sounds" (index: #15; argument: "").
I: [pulseaudio] module.c: Loaded "module-filter-heuristics" (index: #16; argument: "").
I: [pulseaudio] module.c: Loaded "module-filter-apply" (index: #17; argument: "").
Inconsistency detected by ld.so: dl-open.c: 689: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!

启动失败的时刻正是echo-cancel模块应该启动的时刻。此外,即使我重建 PA 而没有任何重大更改 - 我也会遇到同样的错误。如果我使用来自官方 Ubuntu repo 的 PA - 它会启动而不会出现任何错误并成功启动echo-cancel模块。

这是我启用的方法echo-cancel,我在末尾添加了以下几行/etc/pulse/default.pa

load-module module-echo-cancel source_name=noechosource sink_name=noechosink
set-default-source noechosource
set-default-sink noechosink

有人能建议我如何通过重建 PA 来解决这个问题吗?也许我重建包的方式在某些方面是错误的。正如我所说,问题甚至不在于重建修改后的 PA,而在于简单地重建它而不进行任何更改,所以问题似乎出在构建过程本身。

答案1

至少在主要内容上已经弄清楚了:

这是一个特定的 deb 构建问题,与 PulseAudio 本身无关:

  • 断言RT_CONSISTENT失败是由于缺少以下依赖项导致的module-echo-cancel.so
    ldd此模块显示libwebrtc-util.so => not found并且根据debuild日志构建了此文件,但未打包到 deb因此没有安装到系统中
  • 默认trustyPA 包已构建不支持 WebRTC AEC(这就是您不需要并且不安装的原因libwebrtc-util.so)。
  • 但我恰恰需要这种 AEC,这就是为什么我libwebrtc-audio-processing-dev在重建 PA 之前安装了该软件包。这些 WebRTC 库被 PA 配置脚本捕获,并且 PA 是在 WebRTC 支持下构建的,但在构建后的步骤中,并非所有必需的文件都打包到 deb 中。
  • 现在,作为临时措施,我手动将其移动libwebrtc-util.so到所需位置。稍后我将找出如何修复构建脚本以正确处理这种情况,然后回来更新此答案。

相关内容