Befehlszeilen-Volume pro Anwendung (möglicherweise Amixer oder Pactl?)

9

Ich kann das Master-Volume mit diesen Befehlen (über die Befehlszeile) ändern und es wirkt sich auf alle Anwendungen aus. Wie kann ich jedoch das Volume nur für eine Anwendung ändern ( XMMSzum Beispiel)?

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 #ist interessant, und es gibt GUI-Anwendungen, die dies tun können : gnome-control-center sound,pavucontrol

9mjb
quelle
Sie können das nicht mit ALSA machen, aber Sie können es mit Pulseaudio machen.
Gilles 'SO - hör auf böse zu sein'

Antworten:

17

Sie können die Anzahl der Senkeneingaben mit dem Befehl pactl abrufen.

$ 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"
...

Mit dieser Nummer (# 7119) geben Sie den Senkeneingang an.

$ pactl set-sink-input-mute 7119 toggle

Die Anwendung wird mit der application.icon_nameEigenschaft identifiziert . Im Folgenden wird das Chrom angegeben.

#!/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
mjy
quelle
1

Für PulseAudio hat Roland Haas ein Tool geschrieben:
https://github.com/rhaas80/pa_volume musste

ich installieren libpulse-dev linux-libc-dev libc6-dev zlib1g-dev libpcre3-dev libglib2.0-0 libglib2.0-dev.
Möglicherweise benötigen Sie auch einen Compiler (gcc) make.

Quelle: https://askubuntu.com/a/968540/382812 "Wie kann ich die Lautstärke von Pulseaudio-Wiedergabe-Apps / -Streams ändern, die derzeit nicht verwendet werden?"

äxl
quelle
1
Dies sind möglicherweise nützliche technische Informationen, die die Frage überhaupt nicht beantworten.
Jeff Schaller
Warum nicht? Die Frage sagt nur " vielleicht Amixer oder Paktl".
Äxl
Es scheint mir, dass diese Antwort auf einen Link verweist, der auf einen Link zu einem Tool verweist, das die Frage beantworten kann. Vielleicht könnten Sie Gelegenheitslesern dieser Website klarer machen, was Sie vorschlagen, indem Sie die AU-Antwort hier einfügen (mit einem Link zurück zu AU). Andernfalls sieht diese Antwort derzeit wie ein Versuch aus, einen make/ Kompilierungsfehler zu beheben. Vielen Dank!
Jeff Schaller