74 votes

Comment changer le puits de pulseaudio avec "pacmd set-default-sink" pendant la lecture ?

Je dois changer le serveur pulseaudio d'un flux audio en cours de lecture.

Le serveur Pulseaudio est configuré avec l'adresse IP 192.168.1.105.

$>cat /etc/pulse/default.pa
...
load-module module-esound-protocol-tcp auth-anonymous=1
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-zeroconf-publish
...

Du côté de la source, le lecteur multimédia VLC joue une chanson.

J'ai créé un nouveau tunnel sink avec pulseaudio du côté source.

pacmd load-module module-tunnel-sink server=192.168.1.105
pacmd set-default-sink 1

Mais pendant la lecture de l'audio, le serveur ne pouvait pas être changé immédiatement. Ce n'est qu'après avoir arrêté le lecteur et l'avoir rejoué qu'il peut être modifié.

Depuis "gnome-volume-control" ou "gnome-control-center sound", la commutation des périphériques de sortie est appliquée immédiatement.

Comment puis-je appliquer la commutation du puits de sortie immédiatement à partir de la ligne de commande pendant la lecture d'un fichier son ?

0voto

ex10se Points 1

Ma façon de changer le périphérique de sortie audio par défaut était d'écrire un script Python :

import os

os.system(f"pacmd set-default-sink {next(a for a in list(os.popen('pacmd list-sinks | grep index').readlines()) if '*' not in a).split(': ')[1][0]}")

Je pense que vous pouvez le modifier pour vos besoins.

0voto

nobody Points 1

Je vais ajouter mon petit poisson Shell Shell au mélange.

#!/usr/bin/env fish

set sinks (pacmd list-sinks | pcregrep -Mo '(?<=index: )\d|(?<=state: )\w+' | sed 'N;s/\n/:/')
set switchtnow false
while true
    for sink in $sinks
        if $switchtnow
            set i (echo "$sink" | grep -Po '\d')
            pacmd set-default-sink "$i"
            return
        end

        set match (echo $sink | grep -o RUNNING)
        if  [ "$match" = "RUNNING" ]
            set switchtnow true
        end
    end
end

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X