コンテンツにスキップ

「PipeWire」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
Kgx (トーク | 投稿記録)
JACK clients: ミスタイプを修正
翻訳の調整
3行目:
[[fi:PipeWire]]
 
[http://pipewire.org PipeWire] は、GNOME が開発した新しい低レベルマルチメディアフレームワークです。開発を担当しているのはWim Taymans です。
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、PulseAudio、JACK、ALSA、Gstreamerをベースとしたアプリケーションと互換性があります。
 
このフレームワークのデーモンは (PulseAudio と JACKの機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。
PipeWire は [[Flatpak]] のようなコンテナをサポートしており、 [https://wiki.archlinux.jp/index.php/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%A8%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97#.E3.82.B0.E3.83.AB.E3.83.BC.E3.83.97.E7.AE.A1.E7.90.86 ユーザーグループ] の ''オーディオ'' や ''ビデオ'' に依存するのではなく、Flatpak や Wayland にスクリーンやオーディオを録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。
 
また PipeWire は [[Flatpak]] のようなコンテナをサポートしており、''audio'' や ''video'' [https://wiki.archlinux.jp/index.php/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%A8%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97[ユーザーとグループ#.E3.82.B0.E3.83.AB.E3.83.BC.E3.83.97.E7.AE.A1.E7.90.86 グループ管理|ユーザーグループ] の ''オーディオ'' や ''ビデオ''] に依存するのではなく、Flatpak や Wayland にスクリーンやオーディオ音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。
 
== インストール ==
11 ⟶ 14行目:
公式リポジトリの {{pkg|pipewire}} パッケージを [[インストール]] します。
 
Pipewire は [[systemd/ユーザー]] を使用してサーバーの管理と自動ソケット起動アクティベーションを行います。サービスの起動時の動作ログの確認方法などの詳細について、それぞれの [[systemd/ユーザー]] を参照してください。
 
必要に応じて {{pkg|pipewire-docs}} をインストールしてドキュメントを確認することもできます。 {{pkg|pipewire-alsa}}、 {{pkg|pipewire-pulse}}、 {{pkg|pipewire-jack}} などの他のパッケージは [https://wiki.archlinux.jp/index.php/PipeWire[#Audio 音声|PulseAudio/JACKの代わりに PipeWire を使用]] したくない場合を除き、通常は必要ありません。 multilib サポートするために {{aur|lib 32lib32-pipewire}}、 {{aur|lib 32lib32-pipewire-jack}} も利用できます。
 
== 使用方法 ==
 
=== WebRTC スクリーンの画面共有===
 
ほとんどのブラウザは WebRTC を使用しているとき (例えば Google Hongouts ハングアウト) デスクトップ (または(や個々のアプリケーション) をキャプチャするために X11 に依存していました。 Wayland ではセキュリティ上の理由から画面共有メカニズムは異なる方法で処理されます。 PipeWire はきめ細かなアクセスコントロール制御を使用して Wayland の下のコンテンツを共有できます。
 
これには {{pkg|xdg-desktop-portal}} とそのバックエンドの1つが必要です [http://jgrulich.cz/2018/07/04/04/how-to-enable-and-use-screen-sharing-on-wayland 必要です] 利用可能なバックエンドは次のとおりです:
 
* GNOME の場合、{{pkg|xdg-desktop-portal-gtk}} gnomeの場合。
* KDE の場合、{{pkg|xdg-desktop-portal-kde}} KDEの場合。
* {{pkg|xdg-desktop-portal-wlr}} wlroots ベースのコンポジター (例えば [[Sway]] [https://github.com/djpohly/dwl dwl]) の場合、{{pkg|xdg-desktop-portal-wlr}}
 
Firefox(84+)Firefox (バージョン84以降) はデフォルトでこのメソッド方法をサポートしていますが、Chromium(73Chromium (バージョン73以降) では、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWireサポート] を次のURLの実験的機能の設定を変更して有効にする必要があります。次のURLの対応する(実験的)フラグ:
chrome://flags/#enable-webrtc-pipewire-capturer
 
{{ic|xdg-Desktopdesktop-Portalportal-WLRwlr}} の作業を動かすには {{icpkg|xdg_current_desktoppipewire-media-session}} をインストール[https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ/db63ec1ab6c0170334c1d1f45d1ebe543cc375fa#runninghow-do-i-run-xdpw]して {{ic|XDG_CURRENT_DESKTOP}} 環境変数を設定[https://github.com/emersion/xdg-desktop-portal-wlr#running]する必要があります:
export XDG_CURRENT_DESKTOP=SWAY をエクスポートしますsway
 
Chromium は 現在 PipeWire 0.2 を使っていますが、Arch Linux では PipeWire 0.3 を提供しているので、スクリーン共有を行うには {{pkg|libpipewire02}} もインストールする必要があります。
 
Chromium は 現在 PipeWire 0.2 を使っていますが、Arch Linux では PipeWire 0.3 を提供しているので、スクリーン画面共有を行うには {{pkg|libpipewire02}} もインストールする必要があります。
{{Tip|複数のモニタがある場合に {{ic|xdg-desktop-portal-wlr}} を使用して個々のモニタを共有するには、 {{ic|1=--output=''Monitor''}} フラグをユニットのサービスファイルの {{ic|1=ExecStart=} オプション [[Systemd#Editing_provided_units|editing]] で追加します。行全体は {{ic|1=ExecStart=@libexecdir@/xdg-desktop-portal-wlr--output=eDP-1}} のようになります。}}}}
 
{{Tip|複数のモニタがある場合に {{ic|xdg-desktop-portal-wlr}} を使用して個々それぞれのモニタを共有するには、 {{ic|1=--output=''Monitor''}} フラグをユニットのサービスファイルの {{ic|1=ExecStart=}} オプション [[Systemd#Editing_provided_units|editing編集]]して {{ic|1=--output=''Monitor''}} フラグを追加しますてください。行全体は {{ic|1=ExecStart=@libexecdir@/xdg-desktop-portal-wlr --output=eDP-1}} のようになります。}}}}
{{Accuracy|[https://github.com/flatpak/xdg-desktop-portal-gtk/pull/225 この要求] が統合されたため、{{Pkg|xdg-desktop-portal-gtk}} の特定のアプリケーション/ウィンドウの共有に関する次の注記が正しくない可能性があります。また、 [https://github.com/flatpak/xdg-desktop-portal-gtk/issues/204] のディスカッションの追跡チケットも参照してください。}}
 
唯一サポートされている機能はデスクトップ全体共有することあり、特定のアプリケーション/ウィンドウ共有することでありサポートされていません [https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ#will-this-let-me-share-individual-windows] [https://github.com/KDE/xdg-desktop-portal-kde/blob/master/TODO]
 
=== Video映像 ===
 
ソフトウェアはまだ製造済みで商業利用にあり適していませんが、試す分には問題ありません。[[https://wiki.archlinux.jp/index.php/GStreamer GStreamer]] に頼を使用して映像ストリームを処理するほとんどのアプリケーション PipeWire GStreamer プラグインのおかげにより設定なし、ビデオストリームはボックス外で機能動作するはずです。例えばの用途のような用途。そのため既に {{pkg|cheese}} したがって、すでにそれのようなアプリケーションは PipeWire を使用してビデオ映像入力を共有利用できます。
 
=== Audio音声 ===
 
PulseAudio Jack と同様に PipeWire をオーディオサーバーとして使用できます。 PulseAudio 互換のサーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで PulseAudio と Jack の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ このブログエントリ記事]を参照してください。
 
==== ALSA/レガシーアプリケーション ====
 
{{pkg|pipewire-alsa}} をインストールして、 PipeWire を介して ALSA API を使用してするすべてのアプリケーションが PipeWire ルーティングし使用するよう設定できます。
 
==== PulseAudio クライアント ====
 
{{pkg|pipewire-pulse}} をインストールします。通常、このパッケージは {{pkg|pulseaudio}} と {{pkg|pulseaudio-bluetooth}} を置き換えます。パッケージがユーザーサービス {{ic|pipewire-pulse.socket}} がパッケージによって自動的に有効する必要があるためので通常それ以上の作は不要です。システム起動時に PipeWire が正しく機能しない場合は、ユーザーサービス {{ic|pipewire-pulse.service}} と {{ic|pipewire.service}} が起動して実行されていることを検証か確認します。 [[Systemd/ユーザー]]を参照してください。
 
変更を適用するには、再起動または再ログインして効果を確認してください。
 
置きが機能しているかどうかを確認するには、次のコマンドを実行して出力を参照確認してください:
 
{{hc|1=$ pactl info|2=
67 ⟶ 68行目:
}}
 
==== JACK clientsクライアント ====
 
{{pkg|pipewire-jack}} をインストールします。{{ic|PWpw-JACKjack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換性のあるライブラリを持つジャッククライアントを起動しが使用されます:
 
pw-jack ''application''
 
カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:
BufferSize/SampLerate (秒単位でブロック待ち時間に等しい) を設定することで、カスタムバッファサイズを要求することも可能です。
 
PIPEWIRE_LATENCY="128/48000" pw-jack ''application''
 
または、 {{aur|pipewire-jack-dropin}} をインストールするか、 {{pkg|jack}}/{{pkg|jack 2}} をアンインストールして JACK クライアントが互換ライブラリを自動的にロードできる読み込むようにもできます。
 
{{ic|ldd}} を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。
 
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=
87 ⟶ 88行目:
==== Bluetooth デバイス ====
 
PipeWire は、Bluetooth オーディオデバイスをハンドルします。 {{pkg|pipewire-pulse}} パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは {{ic|/etc/pipewire/media-session.d/with-pulseaudio}} をチェックし、ファイルが存在する場合は時に自動的にその {{ic|BLUEZ5bluez5}} モジュールを有効にします。
 
==== ネイティブジャックの JACK 上で PipeWire を実行しま ====
 
PipeWire は、必要に応じてネイティブジャック JACK デーモンにあるジャックの JACK クライアントとして実行することもできます。詳細について [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/jackJACK JACK and pipewirePipeWire] を参照してください。
 
== 音声のポストプロセッシング ==
== オーディオの後処理 ==
 
=== パルス効果PulseEffects ===
 
PulseEffects は GTK ユーティリティで、多数のエフェクトとフィルタを個々の入出力ストリーム(アプリケーションの音声出力ストリームとマイク入力ストリームなど)多数のオーディオエフェクトとフィルタを提供します。注目すべきエフェクトには、入出力イコライザー、出力ラウドネスイコライゼーションと等化、ベースエンハンスメント、入力ディエッサーノイズリダクション抑制プラグインなどがあります。エフェクトの全リストについては、 [https://github.com/wwmm/pulseeffects GitHub ページ] を参照してくださいにエフェクトの一覧があります
 
PipeWire で PulseEffects を使用するには、{{Pkgpkg|pulseeffects}} または {{AUR|pulseeffects-git}} をインストールします。
 
{{Note|これにより、 {{Pkgpkg|pipewire-pulse}} がインストールされ [[#PulseAudio clientsクライアント|PulseAudio PipeWire に置き換えて]] インストールされます。]] 詳細は {{Bug|69437}} を参照してください。レガシー古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}
 
プリセット設定のコレクションについては、[https://github.com/wwmm/pulseeffects/wiki/Community-presets Community Presetsコミュニティープリセット] を参照してください。
 
== トラブルシューティング ==
 
=== PipeWire によってマイクが検出されませんない ===
 
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{pkg|alsa-card-profiles}} を使用してデバイスを検出します。これでうまくいかない場合は、 {{ic|api.alsa.use-acp}} をオフにするか、 {{ic|/etc/pipewire/media-session.d/alsa-monitor.conf}} の {{ic|rules}} -> 最初のルール -> {{ic|actions}} -> {{ic|update-props}} の下でオプションとして {{ic|api.alsa.use-acp}} を {{ic|false}} にするか、または {{ic|api.alsa.use-ucm}} をオン {{ic|true}} にしてみてください:
 
...
116 ⟶ 117行目:
...
 
次に PipeWire を再起動し使用可能なデバイスをチェック確認します:
 
{{hc|1=
127 ⟶ 128行目:
}}
 
=== Bluetooth デバイスに接続しても音が聞こえない ===
 
2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。 {{ic|pactl list sinks}} を使用して使用可能なシンク一覧表示し、{{ic|pactl set-default-sink}} を使用してデフォルトのシンクを Bluetooth デバイスに切り替えます。これは [https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e この1] のようなスクリプト] を使って [[udev]] で自動化できます。
 
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド] を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。
 
=== 音量が小さい ===
 
PulseAudio を Pipewire 置き換えた後、サウンドは常に動作ましたく音出ても、再起動後にボリューム音量が極端に小さくなることがありました
 
{{ic|alsamixer}} を開き、{{ic|F6}} を使っ押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。 {{ic|alsactl}} は再起動後もこの設定を維持する必要がありまはずです。
 
=== increasing RLIMIT_MEMLOCK の増加===
 
12月Dec 13 11:11:11 HOST pipewire-pulse [99999] : Failed to mlock memory 0x7f4f659d8000 32832:に失敗しました。これは問題ではありませんが、最高のパフォーマンスを得るために、 RLIMIT_MEMLOCKThis の増加を検討してください。is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK
 
{{pkg|realtime-privileges}} をインストールし {{ic|realtime}} グループに自分のユーザーを追加します。
 
あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。[[systemd/ユーザー]] で {{ic|pipewire-pulse}} を実行している場合は {{ic|/etc/security/limits.d/username.conf}} に次の行を追加します:
 
username soft memlock 64
username hard memlock 128
 
=== 再接続後に外付けサウンドカードがアクティブ再接続後に有効にならない ===
 
{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル ''オフoff'' のエントリがあるかどうかを確認し、れば削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、 {{ic|systemctl --user restart pipewire.service}} を使用して PipeWire を再起動します。
 
=== No Sound 音が出ないまたは pactl info show Failure: Connection refused と表示する ===
これはアプリケーションが PipeWire-Pulse サービスに接続できず、ていないことを意味します。{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、 {{ic|systemctl --user restart pipewire-pulse.service}} を使用して PipeWire-Pulse を再起動して下さい。
 
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl情報 info}} を実行し、pastebin {{ic|/tmp/pipe.txt}} を実行し貼り付けて、IRC (Freenode '''#pipewire''') かメーリングリストでヘルプを探相談してください。
 
=== Bluetooth のオーディオ音声の品質が低い===
 
Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered
 
Bluetooth 再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} で {{ic|pipewire.service}}確認実行てみてください。このようなエラーが発生した表示される場合は {{ic|pactl list sinks}} を使用して現在選択されているコーデックをチェック確認し、 {{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez 5bluez5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd の場合}} のいずれかに設定変更して変更を試てください。変更を有効に適用するため {{ic|systemctl --user restart pipewire.service}} を使用して PipeWire を再起動する必要があります。
 
{{hc|head=/etc/pipewire/media-session.d/bluez-monitor.conf|output=
172 ⟶ 173行目:
...}}
 
=== PipeWire の更新と再起動後 (git / >=0.3.23) と再起動後デバイスが検出されませんない===
 
commitコミット 012a68f8[https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/012a68f8ef33705f1a40ec8ac294b8cce7f6aa88] の時点で新しい systemd サービスが追加されデフォルトでは無効になっています。これはシステムリブートの再起動時に {{ic|pipewire-media-session}} が実行されないことを意味します。サービスの実行を有効にするには、次の手順に従います。 {{ic|systemctl --user enable --now pipewire-media-session.service}} を実行します。
 
ユーザーまたはシステムの管理者やパッケージマネージャが更新後に構成設定ファイルの変更をソート整理していない場合、 {{ic|pipewire.service}} によって {{ic|pipewire-media-session}} の別のインスタンプロセスが実行されている可能性があります。実行をチェックしてください確認するには :{{ic|systemctl --user status pipewire.service}} を実行してください。
 
実行中の pipewire および pipewire-media-session が実行中と表示される場合は、システムまたは設定かユーザ設定、あるいはその両方を更新します。
 
{{hc|head=/etc/pipewire/pipewire.conf および/または ~/.config/pipewire/pipewire.conf|output=
context.exec = {
...
# 以下の行はコメントアウトする必要があります
#"/usr/bin/pipewire-media-session" = { args = "" }
...
189 ⟶ 190行目:
}}
 
=== 再生開始時にオーディオ音声に遅延が発生する ===
 
これは非アクティブ時のノードの中断サスペンドが原因です。これを修正するには、遅延が発生する場所領域に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を {{ic|0}} に変更してサスペンドを無効にするか、他の値を試して動作を確認しますてみてくださいあるいは、 {{ic|/etc/pipewire/media-session.conf}} の {{ic|suspend-node}} の行をコメントアウトすることもできます。変更を適用するには {{ic|pipewire}} および {{ic|pipewire-pulse}} systemd サービスの両方を再起動してこれらの変更を適用するか、またはシステムを再起動しますてください
 
=== 複数のストリームの再生開始時にオーディオ音声カットアウトさ途切れる ===
 
この問題は通常 {{ic|journalctl -b | grep -i pipewire}} を実行し、次のような行を検索ことで診断できます:
 
pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940
 
[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors 公式 PipeWire トラブルシューティングガイド] によると、この問題を解決するには {{ic|/etc/pipewire/media-session.d/alsa-monitor.conf}} を編集し、 {{ic|1=api.alsa.headroom = 0}} という行のコメントを外し、値を {{ic|1024}} に変更します。
 
== 参照 ==
 
* [https://githubgitlab.comfreedesktop.org/PipeWirepipewire/pipewire/wiki-/wikis/home Wiki] — PipeWire Wiki on GitHubFreedesktop GitLab
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — PipeWire の2018年1月時点での進捗が書かれた記事
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — 2020年9月からのブログ投稿記事

2021年3月19日 (金) 14:53時点における版


PipeWire は新しい低レベルマルチメディアフレームワークです。 映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、PulseAudio、JACK、ALSA、Gstreamerをベースとしたアプリケーションと互換性があります。

このフレームワークのデーモンは (PulseAudio と JACKの機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。

また PipeWire は Flatpak のようなコンテナをサポートしており、audiovideo ユーザーグループ に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める Polkit のようなセキュリティモデルを使用しています。

インストール

公式リポジトリの pipewire パッケージを インストール します。

Pipewire は systemd/ユーザー を使用してサーバーの管理とソケットアクティベーションを行います。起動時の動作やログの確認方法などの詳細は systemd/ユーザー を参照してください。

必要に応じて pipewire-docs をインストールしてドキュメントを確認することもできます。 pipewire-alsapipewire-pulsepipewire-jack などの他のパッケージは PulseAudio/JACKの代わりに PipeWire を使用 したい場合を除き必要ありません。 multilib サポートのために lib32-pipewireAURlib32-pipewire-jackAUR も利用できます。

使用方法

WebRTC 画面共有

ほとんどのブラウザは WebRTC を使用しているとき (例えば Google ハングアウトで) デスクトップ (や個々のアプリケーション) をキャプチャするのに X11 に依存していました。 Wayland ではセキュリティ上の理由から画面共有は異なる方法で処理されます。 PipeWire はきめ細かなアクセス制御を使用して Wayland 上のコンテンツを共有できます。

これには xdg-desktop-portal とそのバックエンドの1つが必要です。 利用可能なバックエンドは次のとおりです:

Firefox (バージョン84以降) はデフォルトでこの方法をサポートしていますが、Chromium (バージョン73以降) では、WebRTC PipeWireサポート を次のURLの実験的機能の設定を変更して有効にする必要があります:

chrome://flags/#enable-webrtc-pipewire-capturer

xdg-desktop-portal-wlr を動かすには pipewire-media-session をインストール[1]して XDG_CURRENT_DESKTOP 環境変数を設定[2]する必要があります:

export XDG_CURRENT_DESKTOP=sway

Chromium は 現在 PipeWire 0.2 を使っていますが、Arch Linux では PipeWire 0.3 を提供しているので、画面共有を行うには libpipewire02 もインストールする必要があります。

ヒント 複数のモニタがある場合に xdg-desktop-portal-wlr を使用してそれぞれのモニターを共有するには、ユニットのサービスファイルの ExecStart= オプションを編集して --output=Monitor フラグを追加してください。行全体は ExecStart=@libexecdir@/xdg-desktop-portal-wlr --output=eDP-1 のようになります。

唯一サポートされている機能はデスクトップ全体の共有で、特定のアプリケーション/ウィンドウの共有はサポートされていません。[3][4]

映像

ソフトウェアはまだ商業利用には適していませんが、試す分には問題ありません。GStreamer を使用して映像ストリームを処理するほとんどのアプリケーションは PipeWire GStreamer プラグインにより設定なしで動作するはずです。そのため既に cheese のようなアプリケーションは PipeWire を使用して映像入力を利用できます。

音声

PulseAudio や Jack と同様に PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで PulseAudio と Jack の両方を置き換えることを目的としています。詳細についてはこの記事を参照してください。

ALSA/レガシーアプリケーション

pipewire-alsa をインストールして ALSA API を使用するすべてのアプリケーションが PipeWire を使用するよう設定できます。

PulseAudio クライアント

pipewire-pulse をインストールします。このパッケージは pulseaudiopulseaudio-bluetooth を置き換えます。パッケージがユーザーサービス pipewire-pulse.socket を自動的に有効化するので、通常それ以上の操作は不要です。システム起動時に PipeWire が正しく機能しない場合は、ユーザーサービス pipewire-pulse.servicepipewire.service が起動して実行されているか確認します。 Systemd/ユーザーを参照してください。

変更を適用するには、再起動または再ログインしてください。

置き換えが機能しているかどうかを確認するには、次のコマンドを実行して出力を確認してください:

$ pactl info
...
Server Name: PulseAudio (on PipeWire 0.3.16)
...

JACK クライアント

pipewire-jack をインストールします。pw-jack を使用して JACK クライアントを起動すると、元の libjack* ではなく PipeWire が提供する互換ライブラリが使用されます:

pw-jack application

カスタムバッファサイズを要求することもできます。PIPEWIRE_LATENCY環境変数を バッファサイズ/サンプルレート (ブロックのレイテンシ(秒)を意味します) に設定します:

PIPEWIRE_LATENCY="128/48000" pw-jack application

また pipewire-jack-dropinAUR をインストールするか、jackjack 2 をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。

ldd を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。

$ ldd /usr/bin/qjackctl | grep -i libjack
libjack.so.0 => /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)

Bluetooth デバイス

PipeWire は pipewire-pulse パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは /etc/pipewire/media-session.d/with-pulseaudio が存在する時に自動的にその bluez5 モジュールを有効にします。

ネイティブ JACK 上で PipeWire を実行する

PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は JACK and PipeWire を参照してください。

音声のポストプロセッシング

PulseEffects

PulseEffects は GTK ユーティリティで、多数のエフェクトとフィルタを個々の入出力ストリーム(アプリケーションの音声出力やマイクの入力など)に提供します。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサー、ノイズ抑制プラグインなどがあります。GitHub ページ にエフェクトの一覧があります。

PipeWire で PulseEffects を使用するには、pulseeffects または pulseeffects-gitAUR をインストールします。

ノート これにより、pipewire-pulse がインストールされ PulseAudio が PipeWire に置き換えられます。 詳細は FS#69437 を参照してください。古いバージョンについては PulseAudio#PulseEffects を参照してください。

プリセット設定のコレクションについては、コミュニティープリセット を参照してください。

トラブルシューティング

PipeWire にマイクが検出されない

PipeWire の alsa-monitor モジュールは、デフォルトで alsa-card-profiles を使用してデバイスを検出します。これでうまくいかない場合は、/etc/pipewire/media-session.d/alsa-monitor.confrules -> 最初のルール -> actions -> update-propsapi.alsa.use-acpfalse にするか、または api.alsa.use-ucmtrue にしてみてください:

...
update-props = {
    api.alsa.use-acp = false
...

次に PipeWire を再起動し使用可能なデバイスを確認します:

$ pw-record --list-targets
Available targets ("*" denotes default): 62
	58: description="Built-in Audio" prio=1872
	60: description="Built-in Audio" prio=2000
*	62: description="Built-in Audio (Loopback PCM)" prio=1984

Bluetooth デバイスに接続しても音が出ない

2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。 pactl list sinks で使用可能なシンクの一覧を表示し、pactl set-default-sink でデフォルトのシンクを Bluetooth デバイスに切り替えます。これは このようなスクリプト を使って udev で自動化できます。

この問題については、この Reddit スレッド を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。

音量が小さい

PulseAudio を Pipewire で置き換えた後、正しく音が出ても、再起動後に音量が極端に小さくなることがあります。

alsamixer を開き、F6 を押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。 alsactl は再起動後もこの設定を維持するはずです。

increasing RLIMIT_MEMLOCK

Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK

realtime-privileges をインストールし realtime グループに自分のユーザーを追加します。

あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。systemd/ユーザーpipewire-pulse を実行している場合は /etc/security/limits.d/username.conf に次の行を追加します:

username	soft	memlock	64
username	hard	memlock	128

外付けサウンドカードが再接続後に有効にならない

~/.config/pipewire-media-session/default-profile にデフォルトプロファイル off のエントリがあれば削除します。それでも解決しない場合は ~/.config/pipewire-media-session/ からすべてのファイルを削除し、systemctl --user restart pipewire.service で PipeWire を再起動します。

音が出ないまたは pactl info が Failure: Connection refused と表示する

これはアプリケーションが PipeWire-Pulse サービスに接続できていないことを意味します。/etc/pipewire/pipewire-pulse.conf が存在し空でないことを確認し、systemctl --user restart pipewire-pulse.service で PipeWire-Pulse を再起動して下さい。

それでも解決しない場合は strace -f -o /tmp/pipe.txt pactl info を実行し、pastebin に /tmp/pipe.txt を貼り付けて、IRC (Freenode #pipewire) かメーリングリストで相談してください。

Bluetooth の音声の品質が低い

Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered

Bluetooth で再生が途切れる場合は systemctl --user status pipewire.service を実行してみてください。このようなエラーが表示される場合は pactl list sinks で現在選択されているコーデックを確認し、/etc/pipewire/media-session.d/bluez-monitor.confbluez5.codecssbc aac ldac aptx aptx_hd のいずれかに変更してみてください。変更を適用するには systemctl --user restart pipewire.service で PipeWire を再起動する必要があります。

/etc/pipewire/media-session.d/bluez-monitor.conf
...
properties = {
  ...
  bluez5.codecs = [sbc]
...

PipeWire の更新 (git / >=0.3.23) と再起動後デバイスが検出されない

コミット 012a68f8[5] の時点で新しい systemd サービスが追加されデフォルトでは無効になっています。これはシステムの再起動時に pipewire-media-session が実行されないことを意味します。サービスを有効にするには systemctl --user enable --now pipewire-media-session.service を実行します。

システムの管理者やパッケージマネージャが更新後に設定ファイルの変更を整理していない場合、pipewire.service によって pipewire-media-session の別のプロセスが実行されている可能性があります。確認するには systemctl --user status pipewire.service を実行してください。

pipewire および pipewire-media-session が実行中と表示される場合は、システム設定かユーザ設定、あるいは両方を更新します。

/etc/pipewire/pipewire.conf または ~/.config/pipewire/pipewire.conf
context.exec = {
  ...
  # 次の行はコメントアウトする必要があります
  #"/usr/bin/pipewire-media-session" = { args = "" }
  ...
}

再生開始時に音声に遅延が発生する

これは非アクティブ時のノードのサスペンドが原因です。遅延が発生する領域に応じて /etc/pipewire/media-session.d/*-monitor.conf を編集し、プロパティ session.suspend-timeout-seconds0 に変更してサスペンドを無効にするか、他の値を試して動作を確認してみてください。/etc/pipewire/media-session.confsuspend-node の行をコメントアウトすることもできます。変更を適用するには pipewirepipewire-pulse systemd サービスの両方を再起動するか、システムを再起動してください。

複数のストリームの再生開始時に音声が途切れる

この問題は通常 journalctl -b を実行し、次のような行を探すことで診断できます:

pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940

公式 PipeWire トラブルシューティングガイド によると、この問題を解決するには /etc/pipewire/media-session.d/alsa-monitor.conf を編集し、api.alsa.headroom = 0 という行のコメントを外し、値を 1024 に変更します。

参照