특정 객체에 해당하는 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를 사용하여 객체를 감지하는 방법은 무엇입니까?
- 여러 줄의 정규 표현식 패턴을 사용하여 객체 감지
- 개체를 하나씩 배치하고 한 줄씩 정규식 패턴(예: grep 사용)을 통해 올바른 개체를 선택합니다.
- 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를 알고 있음을 증명하십시오.
- 실행
pw-play [path to a audio file] &
또는cvlc [path to a audio file] &
다른 플레이어. 목표는 오디오 재생을 시작하고 프로세스의 PID를 배우는 것입니다. 참고: 파일은 다음 명령을 실행할 시간을 제공할 만큼 길어야 합니다. - 실행하면
pw-cli ls | grep [the pid]
가 반환됩니다pipewire.sec.pid = "[PID]"
. 이는 Pipewire 서버의 그래프가 PID를 알고 있음을 증명합니다. 실행하면pw-cli ls | grep -B20 -A20 [the pid]
해당 매개변수가 어떤 객체에 속하는지 알 수 있습니다.