PulseAudio에서 활성 수신기 가져오기

PulseAudio에서 활성 수신기 가져오기

PulseAudio는 (놀랍게도) 간단한 쿼리 명령을 제공하지 않기 때문에 출력을 구문 분석하여 pacmd list-sinks활성 수신기의 인덱스를 가져옵니다. 그러나 어떤 라인이 실제로 어떤 수신기가 활성화되어 있는지를 나타내는지는 확실하지 않습니다. 나는 인덱스 라인 앞에 별표가 있다는 것을 알고 있습니다.기본싱크대. 그러나 이것은 활성 수신기와 동일하지 않은 것 같습니다. 블루투스 스피커를 연결하면 모든 오디오가 통과되지만, 그럼에도 불구하고 수신기 0은 여전히 ​​기본값으로 표시됩니다. 오디오를 재생하면 오디오를 출력하는 수신기에 "상태: 실행 중"이 표시됩니다. 하지만 재생이 중지되면 일시정지 상태로 돌아갑니다.

PulseAudio가 오디오에 사용할 수신기를 찾는 신뢰할 수 있는 방법이 있습니까?

답변1

PulseAudio 용어에 대한 더 깊은 이해가 필요한 것 같습니다. 소스를 나열하면 Bluetooth 스피커가 기본값으로 올바르게 표시됩니다. 소스와 싱크는 분명히 동일한 인덱스를 공유하므로 pacmd list-sources에서 추출한 인덱스 번호를 전달하여 pactl set-sink-volume볼륨을 변경할 수 있습니다. pactl set-source-volume아무것도 이루어지지 않았기 때문입니다 . 정말 이해할 수 없지만 작동합니다.

답변2

나에게 기본 수신기는 활성 수신기와 동일한 것 같습니다(기본값만 전환하면 적어도 전환에는 작동합니다). 이것이 직접적인 대답은 아니라는 것을 알고 있지만 나에게 맞는 기본 수신기를 가져오는 스니펫이 있습니다.

pacmd list-sinks | awk '/\*/ {getline; print $2}'기본 수신자 이름을 가져옵니다. (<>로 둘러싸여 있음)

'/\*/ {getline; print $2}': 이 부분은 awk 명령이며, 이 부분의 목표는 활성 수신기를 가져오고 이름을 가져오는 것입니다.

/\*/: 이는 awk가 별표(*)가 포함된 행을 찾는다는 의미입니다. pacmd list-sinks 출력에서 ​​별표는 기본 싱크(현재 활성 사운드 장치)를 나타냅니다.

{getline; print $2}: 이것은 awk가 별표가 포함된 행을 찾을 때 수행하는 작업입니다. getline은 일치 후 다음 줄을 가져오고, print $2는 활성 수신자인 공백으로 구분된 해당 새 줄의 두 번째 필드(열)를 인쇄합니다.

관련 정보