web-dev-qa-db-ja.com

PulseAudioの再構築後にエコーキャンセルが機能しない

私はUbuntu 14.04.5を使用しており、ソースからPulseAudioを再構築する際に問題に直面しました。ここのPulseAudioは4.0-0ubuntu11.1ですが、それを再構築し、最新のパッチを含める必要があります https://patchwork.freedesktop.org/patch/65100/echo-cancelモジュールを改善します。

Ubuntuコミュニティドキュメント https://help.ubuntu.com/community/UpdatingADeb の指示に従ってPAを再構築しようとしました。つまりapt-get build-dep ...apt-get source ...patch ...debchange -idpkg-source --commitdebuild -us -uc -i -I。ビルドは成功し、エラーは1つだけでした-「pulseaudio:postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/pulseaudio」ですが、無視する必要があると思います。次に、debiを使用してビルドパッケージをインストールし、PAを起動して次のエラーを取得しようとしました。

$ 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リポジトリから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を再構築することでさえありませんが、変更せずに単純に再構築するので、問題はビルドプロセス自体にあるようです。

2

少なくとも主に、それを考え出した:

これは、PulseAudio自体とは関係のない、特定のdeb構築の問題です。

  • RT_CONSISTENTアサーションエラーは、module-echo-cancel.soの依存関係の欠落が原因で発生しました。
    このモジュールの lddlibwebrtc-util.so => not foundを示し、debuildログによれば、このファイルはビルドされました、しかしdebにパッケージされていませんシステム
  • デフォルトのtrusty PAパッケージは、WebRTC AECのサポートなしで構築されます(そして、それがlibwebrtc-util.soを必要とせず、インストールしない理由です)。
  • しかし、まさにこの種のAECが必要なので、PAを再構築する前にlibwebrtc-audio-processing-devパッケージをインストールしたのです。これらのWebRTCライブラリはPA構成スクリプトによってキャッチされ、PAはWebRTCサポートを使用してビルドされましたが、ビルド後のステップでは、必要なファイルがすべてdebにパッケージ化されませんでした。
  • 一時的な対策として、libwebrtc-util.soを目的の場所に手動で移動しました。後で、このケースを正しく処理するスクリプトの作成を修正し、戻ってこの回答を更新する方法を見つけます。
1