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는 활성 수신자인 공백으로 구분된 해당 새 줄의 두 번째 필드(열)를 인쇄합니다.