コンテンツにスキップ

「PipeWire」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
Kgx (トーク | 投稿記録)
JACK clients: ミスタイプを修正
翻訳の調整
3行目: 3行目:
[[fi:PipeWire]]
[[fi:PipeWire]]


[http://pipewire.org PipeWire] は、GNOME が開発した新しいマルチメディアフレームワークです。開発を担当しているのはWim Taymans です。
[http://pipewire.org PipeWire] は新しい低レベルマルチメディアフレームワークです。
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、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'' [[ユーザーとグループ#グループ管理|ユーザーグループ]] に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。


== インストール ==
== インストール ==
11行目: 14行目:
公式リポジトリの {{pkg|pipewire}} パッケージを [[インストール]] します。
公式リポジトリの {{pkg|pipewire}} パッケージを [[インストール]] します。


Pipewire は [[systemd/ユーザー]] を使用してサーバーの管理と自動ソケット起動を行います。サービスの起動動作ログの詳細について、それぞれの [[systemd/ユーザー]] を参照してください。
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 32-pipewire}}、 {{aur|lib 32-pipewire-jack}} も利用できます。
必要に応じて {{pkg|pipewire-docs}} をインストールしてドキュメントを確認することもできます。 {{pkg|pipewire-alsa}}、{{pkg|pipewire-pulse}}、{{pkg|pipewire-jack}} などの他のパッケージは [[#音声|PulseAudio/JACKの代わりに PipeWire を使用]] したい場合を除き必要ありません。 multilib サポートために {{aur|lib32-pipewire}}、{{aur|lib32-pipewire-jack}} も利用できます。


== 使用方法 ==
== 使用方法 ==


=== WebRTC スクリーンの共有===
=== WebRTC 画面共有===


ほとんどのブラウザは WebRTC を使用しているとき 例えば Google Hongouts デスクトップ (または個々のアプリケーション をキャプチャするために X11 に依存していました。 Wayland ではセキュリティ上の理由から共有メカニズムは異なる方法で処理されます。 PipeWire はアクセスコントロールを使用して Wayland の下のコンテンツを共有できます。
ほとんどのブラウザは WebRTC を使用しているとき (例えば Google ハングアウト) デスクトップ (や個々のアプリケーション) をキャプチャするに 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] 利用可能なバックエンドは次のとおりです
これには {{pkg|xdg-desktop-portal}} とそのバックエンドの1つが[http://jgrulich.cz/2018/07/04/04/how-to-enable-and-use-screen-sharing-on-wayland 必要です] 利用可能なバックエンドは次のとおりです:


* {{pkg|xdg-desktop-portal-gtk}} gnomeの場合。
* GNOME の場合、{{pkg|xdg-desktop-portal-gtk}}
* {{pkg|xdg-desktop-portal-kde}} KDEの場合。
* KDE の場合、{{pkg|xdg-desktop-portal-kde}}
* {{pkg|xdg-desktop-portal-wlr}} wlroots ベースのコンポジター例えば [[Sway]] [https://github.com/djpohly/dwl dwl]
* wlroots ベースのコンポジター (例えば [[Sway]] [https://github.com/djpohly/dwl dwl]) の場合、{{pkg|xdg-desktop-portal-wlr}}


Firefox(84+)はデフォルトでこのメソッドをサポートしていますが、Chromium(73以降では、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWireサポート] を有効にする必要があります。次のURLの対応する(実験的)フラグ
Firefox (バージョン84以降) はデフォルトでこの方法をサポートしていますが、Chromium (バージョン73以降) では、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWireサポート] を次のURLの実験的機能の設定を変更して有効にする必要があります:
chrome://flags/#enable-webrtc-pipewire-capturer
chrome://flags/#enable-webrtc-pipewire-capturer


{{ic|xdg-Desktop-Portal-WLR}} の作業には {{ic|xdg_current_desktop}} [https://github.com/emersion/xdg-desktop-portal-wlr#running] を設定する必要があります
{{ic|xdg-desktop-portal-wlr}} を動かすには {{pkg|pipewire-media-session}} をインストール[https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ/db63ec1ab6c0170334c1d1f45d1ebe543cc375fa#how-do-i-run-xdpw]して {{ic|XDG_CURRENT_DESKTOP}} 環境変数を設定[https://github.com/emersion/xdg-desktop-portal-wlr#running]する必要があります:
XDG_CURRENT_DESKTOP=SWAY をエクスポートします
export XDG_CURRENT_DESKTOP=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=ExecStart=}} オプション[[Systemd#Editing_provided_units|編集]]して {{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]
唯一サポートされている機能はデスクトップ全体共有で、特定のアプリケーション/ウィンドウ共有はサポートされていません[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}} したがって、すでにそれを使用してビデオ入力を共有できます。
ソフトウェアはまだ商業利用に適していませんが、試す分には問題ありません。[[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/ このブログエントリ]
PulseAudio Jack と同様に PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで PulseAudio と Jack の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ この記事]を参照してください。


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


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


==== PulseAudio クライアント ====
==== PulseAudio クライアント ====


{{pkg|pipewire-pulse}} をインストールします。通常、ユーザーサービス {{ic|pipewire-pulse.socket}} がパッケージによって自動的に有効する必要があるため、それ以上の作は不要です。システム起動時に PipeWire が正しく機能しない場合は、ユーザーサービス {{ic|pipewire-pulse.service}} と {{ic|pipewire.service}} が起動して実行されていることを検証します。 [[Systemd/ユーザー]]を参照してください。
{{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=
{{hc|1=$ pactl info|2=
67行目: 68行目:
}}
}}


==== JACK clients ====
==== JACK クライアント ====


{{pkg|pipewire-jack}} をインストールし{{ic|PW-JACK}} を使用して、元の {{ic|libjack*}} ではなく互換性のあるライブラリを持つジャッククライアントを起動します
{{pkg|pipewire-jack}} をインストールします。{{ic|pw-jack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換ライブラリが使用されます:


pw-jack ''application''
pw-jack ''application''


カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:
BufferSize/SampLerate (秒単位でブロック待ち時間に等しい) を設定することで、カスタムバッファサイズを要求することも可能です。


PIPEWIRE_LATENCY="128/48000" pw-jack ''application''
PIPEWIRE_LATENCY="128/48000" pw-jack ''application''


または、 {{aur|pipewire-jack-dropin}} をインストールするか、 {{pkg|jack}}/{{pkg|jack 2}} をアンインストールしてJACK クライアントが互換ライブラリを自動的にロードできるようにます。
また {{aur|pipewire-jack-dropin}} をインストールするか、{{pkg|jack}}{{pkg|jack 2}} をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。


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


{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=
87行目: 88行目:
==== Bluetooth デバイス ====
==== Bluetooth デバイス ====


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


==== ネイティブジャックの上で PipeWire を実行します ====
==== ネイティブ JACK 上で PipeWire を実行す ====


PipeWire は、必要に応じてネイティブジャックデーモンにあるジャッククライアントとして実行することもできます。詳細について[https://gitlab.freedesktop.org/pipewire/pipewire//wikis/jack and pipewire] を参照してください。
PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] を参照してください。


== 音声のポストプロセッシング ==
== オーディオの後処理 ==


=== パルス効果 ===
=== PulseEffects ===


PulseEffects は GTK ユーティリティで、個々のアプリケーション出力ストリームとマイク入力ストリーム多数のオーディオエフェクトとフィルタを提供します。注目すべきエフェクトには、入出力イコライザー、出力ラウドネスイコライゼーションとベースエンハンスメント、入力ディエッサーノイズリダクションプラグインなどがあります。エフェクトの全リストについては、 [https://github.com/wwmm/pulseeffects GitHubページ] を参照してください
PulseEffects は GTK ユーティリティで、多数のエフェクトとフィルタを個々の入出力ストリーム(アプリケーションの音声出力マイク入力など)に提供します。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサーノイズ抑制プラグインなどがあります。[https://github.com/wwmm/pulseeffects GitHub ページ] にエフェクトの一覧があります


PipeWire で PulseEffects を使用するには、{{Pkg|pulseeffects}} または {{AUR|pulseeffects-git}} をインストールします。
PipeWire で PulseEffects を使用するには、{{pkg|pulseeffects}} または {{AUR|pulseeffects-git}} をインストールします。


{{Note|これにより、 {{Pkg|pipewire-pulse}} [[#PulseAudio clients|PulseAudio PipeWire に置き換えて]] インストールされます。詳細は {{Bug|69437}} を参照してください。レガシーバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}
{{Note|これにより、{{pkg|pipewire-pulse}} がインストールされ [[#PulseAudio クライアント|PulseAudio PipeWire に置き換えれます。]] 詳細は {{Bug|69437}} を参照してください。古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}


プリセット設定のコレクションについては、[https://github.com/wwmm/pulseeffects/wiki/Community-presets Community Presets] を参照してください。
プリセット設定のコレクションについては、[https://github.com/wwmm/pulseeffects/wiki/Community-presets コミュニティープリセット] を参照してください。


== トラブルシューティング ==
== トラブルシューティング ==


=== PipeWire によってマイクが検出されません===
=== 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-ucm}} をオンにしてみてください
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{pkg|alsa-card-profiles}} を使用してデバイスを検出します。これでうまくいかない場合は、{{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 を再起動し使用可能なデバイスをチェックします
次に PipeWire を再起動し使用可能なデバイスを確認します:


{{hc|1=
{{hc|1=
127行目: 128行目:
}}
}}


=== Bluetooth デバイスに接続しても音が聞こえない ===
=== Bluetooth デバイスに接続しても音がない ===


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


この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Redditスレッド] を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド] を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。


=== 音量が小さい ===
=== 音量が小さい ===


PulseAudio を Pipewire 置き換えた後、サウンドは常に動作ましたが、再起動後にボリュームが極端にくなりました
PulseAudio を Pipewire 置き換えた後、正しく音出ても、再起動後に音量が極端に小さくなることがありま


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


=== RLIMIT_MEMLOCK の増加===
=== increasing RLIMIT_MEMLOCK ===


12月13 11:11:11 HOST pipewire-pulse [99999] :mlock memory 0x7f4f659d8000 32832:に失敗しました。これは問題ではありませんが、最高のパフォーマンスを得るために、 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


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


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


username soft memlock 64
username soft memlock 64
username hard memlock 128
username hard memlock 128


=== 再接続後に外付けサウンドカードがアクティブにならない ===
=== 外付けサウンドカードが再接続後に有効にならない ===


{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル ''オフ'' のエントリがあるかどうかを確認し、削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、 {{ic|systemctl--user restart pipewire.service}} を使用して PipeWire を再起動します。
{{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 ===
=== 音が出ないまたは pactl info Failure: Connection refused と表示する ===
これはアプリケーションが PipeWire-Pulse サービスに接続できず、{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、 {{ic|systemctl--user restart pipewire-pulse.service}} を使用して PipeWire-Pulse を再起動して下さい。
これはアプリケーションが 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情報}} pastebin {{ic|/tmp/pipe.txt}} を実行し、IRC (Freenode '''#pipewire''') かメーリングリストでヘルプを探してください。
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl info}} を実行し、pastebin {{ic|/tmp/pipe.txt}} を貼り付けて、IRC (Freenode '''#pipewire''') かメーリングリストで相談してください。


=== Bluetooth のオーディオ品質が低い===
=== 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
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 5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd の場合}} のいずれかに設定して変更を試変更を有効にするために {{ic|systemctl--user restart pipewire.service}} を使用して PipeWire を再起動ます。
Bluetooth 再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} を実行てみてください。このようなエラーが表示される場合は {{ic|pactl list sinks}} 現在選択されているコーデックを確認し、{{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez5.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=
{{hc|head=/etc/pipewire/media-session.d/bluez-monitor.conf|output=
172行目: 173行目:
...}}
...}}


=== PipeWire の更新と再起動後 (git/>=0.3.23) デバイスが検出されません===
=== 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}}
コミット 012a68f8[https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/012a68f8ef33705f1a40ec8ac294b8cce7f6aa88] の時点で新しい systemd サービスが追加されデフォルトでは無効になっています。これはシステムの再起動時に {{ic|pipewire-media-session}} が実行されないことを意味します。サービスを有効にするには {{ic|systemctl --user enable --now pipewire-media-session.service}} を実行します。


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


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


{{hc|head=/etc/pipewire/pipewire.conf および/または ~/.config/pipewire/pipewire.conf|output=
{{hc|head=/etc/pipewire/pipewire.conf または ~/.config/pipewire/pipewire.conf|output=
context.exec = {
context.exec = {
...
...
# 以下の行はコメントアウトする必要があります
# の行はコメントアウトする必要があります
#"/usr/bin/pipewire-media-session" = { args = "" }
#"/usr/bin/pipewire-media-session" = { args = "" }
...
...
189行目: 190行目:
}}
}}


=== 再生開始時にオーディオに遅延が発生する ===
=== 再生開始時に音声に遅延が発生する ===


これは非アクティブ時のノードの中断が原因です。これを修正するには、遅延が発生する場所に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を 0 に変更して無効にするか、他の値を試して動作を確認しますあるいは、 {{ic|/etc/pipewire/media-session.conf}} の {{ic|suspend-node}} をコメントアウトすることもできます。 {{ic|pipewire}} および {{ic|pipewire-pulse}} systemd サービスの両方を再起動してこれらの変更を適用するか、または再起動します
これは非アクティブ時のノードのサスペンドが原因です。遅延が発生する領域に応じて {{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}} を実行し、次のような行を検索ことで診断できます
この問題は通常 {{ic|journalctl -b | grep -i pipewire}} を実行し、次のような行をすことで診断できます:


pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940
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://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://github.com/PipeWire/pipewire/wiki Wiki] — PipeWire Wiki on GitHub
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop 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/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月からのブログ投稿
* [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 に変更します。

参照