オブジェクトIDを使用して正しいPipewireオブジェクトを取得する

オブジェクトIDを使用して正しいPipewireオブジェクトを取得する

特定のオブジェクトに対応する Pipewire オブジェクト。シリアルを知る必要があります。

解析された出力はpw-cli list-objects私に必要なものですが、複数行の正規表現を使用すると恐ろしいです。

pw-cli list-objectsこれを考慮すると:

id 0, type PipeWire:Interface:Core/4
    object.serial = "0"
    core.name = "pipewire-0"
id 1, type PipeWire:Interface:Module/3
    object.serial = "1"
    module.name = "libpipewire-module-rt"
id 2, type PipeWire:Interface:Module/3
    object.serial = "2"
    module.name = "libpipewire"
...
...

この形式の名前が何であるかわからないので、直接解析する必要があります。

まず、オブジェクト(ID 1、2、...)を識別してから正規表現に1行ずつ配置し、正しいオブジェクトを選択してから正規表現を使用して正しいパラメータを解析する必要があります。

AWKを使用してオブジェクトを検出する方法は?

  1. 複数行の正規表現パターンを使用したオブジェクトの検出
  2. オブジェクトを1つずつ配置し、1行ずつ正規表現パターン(grepなど)を使用して正しいオブジェクトを選択します。
  3. awkが正しいオブジェクトをプッシュしてから、正しいパラメータの正しい値を解析する状況にあります
    grep -G "\s.*object.serial = \".*\"" | cut -d '"' -f

@marcus-müllerの場合

いいですね。私の目標は、特定のプロセスのオーディオを操作することです。

私のスクリプトには、プロセスの正しいPIDを決定するメソッドがあります。 PipewireはPIDを理解していないため、object.serialそのPIDに対応する情報を知る必要があります。ただし、チャートにはそれが含まれ、pipewire.sec.pidパラメータに保存されます。そのパラメータを使用すると、グラフ内の正しいオブジェクトを識別し、そのオブジェクトの他のパラメータobject.serialなどを使用できます。

Pipewire サーバーがクライアントの PID を知っていることを証明します。

  1. 実行pw-play [path to a audio file] &またはcvlc [path to a audio file] &他のプレイヤー。目標は、オーディオの再生を開始し、プロセスのPIDを学ぶことです。注:ファイルは、次のコマンドを実行するのに十分な時間が必要です。
  2. 実行するとpw-cli ls | grep [the pid]が返されますpipewire.sec.pid = "[PID]"。これは、PipewireサーバーのグラフがPIDを知っていることを証明します。実行すると、pw-cli ls | grep -B20 -A20 [the pid]そのパラメータがどのオブジェクトに属しているかがわかります。

関連情報