개체 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,...)를 식별한 다음 정규식에 한 줄씩 넣고 올바른 개체를 선택한 다음 정규식을 사용하여 올바른 매개 변수를 구문 분석해야 합니다.

AWK를 사용하여 객체를 감지하는 방법은 무엇입니까?

  1. 여러 줄의 정규 표현식 패턴을 사용하여 객체 감지
  2. 개체를 하나씩 배치하고 한 줄씩 정규식 패턴(예: 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]해당 매개변수가 어떤 객체에 속하는지 알 수 있습니다.

관련 정보