애플리케이션 볼륨별 명령줄(아마도 amixer 또는 pactl?)

애플리케이션 볼륨별 명령줄(아마도 amixer 또는 pactl?)

명령줄에서 이러한 명령을 사용하여 마스터 볼륨을 변경할 수 있으며 이는 모든 응용 프로그램에 영향을 미칩니다. 하지만 한 응용 프로그램의 볼륨만 변경하려면 어떻게 해야 합니까( XMMS예:)?

amixer -q  set Master     toggle  # or pactl set-sink-mute   0 toggle
amixer -q sset Master 5%+ unmute  # or pactl set-sink-volume 0 -- -5%
amixer -q sset Master 5%- unmute  # or pactl set-sink-volume 0 -- +5%

pacmd dump #흥미롭습니다. 이를 수행하는 GUI 애플리케이션이 있습니다 gnome-control-center sound.pavucontrol

답변1

pactl 명령을 사용하여 수신기 입력 수를 얻을 수 있습니다.

$ pactl list sink-inputs
...
Sink Input #7119
    Driver: protocol-native.c
    Owner Module: 12
    Client: 6298
    Sink: 0
...
Properties:
    application.icon_name = "google-chrome"
    media.name = "Playback"
    application.name = "Chromium"
...

이 번호(#7119)를 사용하여 수신기 입력을 지정할 수 있습니다.

$ pactl set-sink-input-mute 7119 toggle

속성을 사용하여 application.icon_name애플리케이션을 식별합니다. Chromium을 지정하면 다음과 같은 일이 발생합니다.

#!/bin/sh
LANGUAGE="en_US"

app_name="Chromium"

current_sink_num=''
sink_num_check=''
app_name_check=''

pactl list sink-inputs |while read line; do \
    sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
    if [ "$sink_num_check" != "" ]; then
        current_sink_num="$sink_num_check"
    else
        app_name_check=$(echo "$line" \
            |sed -rn 's/application.name = "([^"]*)"/\1/p')
        if [ "$app_name_check" = "$app_name" ]; then
            echo "$current_sink_num" "$app_name_check"

            pactl set-sink-input-mute "$current_sink_num" toggle
        fi
    fi
done

답변2

PulseAudio를 위해 Roland Haas가 작성함도구.

설치해야 했습니다 libpulse-dev linux-libc-dev libc6-dev zlib1g-dev libpcre3-dev libglib2.0-0 libglib2.0-dev. 컴파일러(gcc)가 필요할 수도 있습니다 make.

원천:현재 사용하지 않는 PulseAudio 재생 애플리케이션/스트림의 볼륨을 어떻게 변경합니까?.

답변3

내 재생 볼륨 제어 조각은 볼륨을 5% 변경하고 음소거를 전환합니다.

#!/bin/bash

inc() {
  playback_input=$(pactl list sink-inputs short | awk '{print $1}' | head -1)
  pactl set-sink-input-volume "$playback_input" +5%
}

dec() {
  playback_input=$(pactl list sink-inputs short | awk '{print $1}' | head -1)
  pactl set-sink-input-volume "$playback_input" -5%
}

mute() {
  playback_input=$(pactl list sink-inputs short | awk '{print $1}' | head -1)
  pactl set-sink-input-mute "$playback_input" toggle
}

답변4

이 기능을 사용하면 PulseAudio를 사용할 때 모든 애플리케이션의 볼륨을 쉽게 설정할 수 있습니다.

function pacmd-set-app-volume() {
  local player="$1"
  local volume="$2"
  playerSinkIndex="$(pacmd list-sink-inputs | awk '/index:|application.name |application.process.binary / {print $0};' | grep -iC 1 "$player" | awk '/index:/ {print $2}')"  # get specific app sink
  [[ $playerSinkIndex ]] && pacmd set-sink-input-volume "$playerSinkIndex" "$((volume*65536/100))" # 100% → 65536
}

.bashrc/ 에 추가할 수 있습니다 .zshrc.

용법:

pacmd-set-app-volume <loosly_app_name> <volume_percentage>  # For eg "MPV Media Player" 55 Or "mpv" "75"

애플리케이션 및 바이너리 이름을 가져옵니다.

pacmd list-sink-inputs | awk '/index:|application.name |application.process.binary / {print $0};'

관련 정보