PipeWire
pipewire.org より:
- PipeWire は Linux における音声と動画の取り回しを大幅に向上させることを目標とするプロジェクトです。現在 PulseAudio と JACK によって処理されているユースケースを同時にサポートして、強力な動画入出力処理を実現することを目指しています。また、コンテナ化されたアプリケーションからオーディオビデオデバイスを簡単に扱えるようなセキュリティモデルを導入し、Flatpak アプリケーションをサポートすることが念頭に置かれています。Wayland や Flatpak と一緒に未来の Linux アプリケーション開発の中心的な存在となるよう期待されています。特徴:
- 遅延を最小限に押さえた音声・動画再生と録画。
- リアルタイムの音声・動画マルチメディア処理。
- アプリケーションがマルチメディアコンテンツを共有できるマルチプロセスアーキテクチャ。
- 最新のアプリケーションで使いやすい統合を提供する GStreamer プラグイン。
- サンドボックス化されたアプリケーションのサポート。
目次
インストール
公式リポジトリの pipewire パッケージを インストール します。
Pipewire は systemd/ユーザー を使用してサーバーの管理と自動ソケット起動を行います。サービスの起動動作とログの詳細については、それぞれの systemd/ユーザー を参照してください。
必要に応じて、 pipewire-docs をインストールしてドキュメントを確認します。 pipewire-alsa、 pipewire-pulse、 pipewire-jack などの他のパッケージは、 PulseAudio/JACKの代わりにPipeWireを使用 したくない場合を除き、通常は必要ありません。 multilib をサポートするために、 lib 32-pipewireAUR、 lib 32-pipewire-jackAUR も利用できます。
使用方法
WebRTC スクリーンの共有
ほとんどのブラウザは、 WebRTC を使用しているとき (例えば Google Hongouts で) デスクトップ (または個々のアプリケーション) をキャプチャするために X11 に依存していました。 Wayland では、セキュリティ上の理由から、共有メカニズムは異なる方法で処理されます。 PipeWire は、アクセスコントロールを使用して、 Wayland の下のコンテンツを共有できます。
これには xdg-desktop-portal とそのバックレンドの1つが必要です [1] インストールする利用可能なバックエンドは次のとおりです。
- xdg-desktop-portal-gtk} gnomeの場合。
- xdg-Desktop-Portal-KDE KDEの場合。
- xdg-desktop-portal-wlr wlroots ベースのコンポジター(例えば Sway、 dwl)
Firefox(84+)はデフォルトでこのメソッドをサポートしていますが、Chromium(73以降)では、WebRTC PipeWireサポート を有効にする必要があります。次のURLの対応する(実験的)フラグ
chrome://flags/#enable-webrtc-pipewire-capturer
xdg-Desktop-Portal-WLR
の作業には、 xdg_current_desktop
[2] を設定する必要があります。
XDG_CURRENT_DESKTOP=SWAY をエクスポートします
Chromium は現在 PipeWire 0.2 を使用しているので、ArchはPipeWire 0.3 では、LibpipeWire02 も作業するために libpipewire02 をインストールする必要があります。
唯一サポートされている機能はデスクトップ全体を共有することであり、特定のアプリ/ウィンドウを共有することではありません [4] [5]
Video
ソフトウェアはまだ製造済みではありませんが、GStreamer に頼るほとんどのアプリケーション。 PipeWire GStreamer プラグインのおかげで、ビデオストリームはボックス外で機能するはずです。例えばの用途のような用途。そのため、 cheese したがって、すでにそれを使用してビデオ入力を共有できます。
audio
PulseAudio と Jack と同様に、 PipeWire をオーディオサーバーとして使用できます。 PulseAudio 互換のサーバー実装と JACK クライアント用の ABI 互換ライブラリを提供することで、 PulseAudio と Jack の両方を置き換えることを目的としています。詳細については、このブログエントリ
ALSA/レガシーアプリケーション
pipewire-alsa をインストールして、 PipeWire を介して ALSA API を使用してすべてのアプリケーションをルーティングします。
PulseAudio クライアント
pipewire-pulse をインストールします。通常、ユーザーサービス pipewire-pulse.socket
がパッケージによって自動的に有効にする必要があるため、それ以上の動作は不要です。システム起動時にPipeWireが正しく機能しない場合は、ユーザーサービス pipewire-pulse.service
と pipewire.service
が起動して実行されていることを検証します。 Systemd/ユーザーを参照してください。
再起動または再ログインして効果を確認してください。
交換が機能しているかどうかを確認するには、次のコマンドを実行して出力を参照してください。
$ pactl info
... Server Name: PulseAudio (on PipeWire 0.3.16) ...
JACK clients
pipewire-jack をインストールし、 PW-JACK
を使用して、元の libjack*
ではなく互換性のあるライブラリを持つジャッククライアントを起動します。
pw-jack application
BufferSize/SampLerate (秒単位でブロック待ち時間に等しい) を設定することで、カスタムバッファサイズを要求することも可能です。
PIPEWIRE_LATENCY="128/48000" pw-jack application
あるいは、 pipewire-jack-dropinAUR} またはアンインストール jack2}/jack2 を自動的にロードさせるために}
JACK アプリケーションが正しいライブラリにリンクしていることを確認するには、LDD
を使用します。
$ ldd /usr/bin/qjackctl | grep -i libjack
libjack.so.0 => /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)
Bluetooth デバイス
PipeWire は、Bluetooth オーディオデバイスをハンドルします。 pipewire-pulse パッケージがインストールされている場合。具体的には、メディアセッションデーモンは /etc/pipewire/media-session.d/with-pulseaudio
をチェックし、ファイルが存在する場合は自動的にその BLUEZ5
モジュールを有効にします。
ネイティブジャックの上で PipeWire を実行します
PipeWire は、必要に応じてネイティブジャックデーモンの上にあるジャッククライアントとして実行することもできます。詳細については、and pipewire を参照してください。
参照
- Wiki — PipeWire Wiki on GitHub
- Pipewire Update Blog Post — PipeWire の2018年1月時点での進捗が書かれた記事