23 votes

Y a-t-il un moyen de changer le périphérique de sortie audio via Applescript ou shell?

Je voudrais changer l'appareil de sortie audio (comme en cliquant sur l'option de l'icône du haut-parleur dans la barre de menus) via un script, mais PAS à travers l'automatisation de l'interface utilisateur, par exemple, en lançant le panneau de Préférences Système.

MISE À JOUR : En utilisant la solution de @Mateusz ci-dessous, voici un script Applescript qui, lorsqu'il est lancé, vous permettra de sélectionner l'appareil de sortie audio souhaité :

set devices to do shell script "/Applications/Audiodevice/audiodevice output list"
set answer to choose from list (paragraphs of devices) with title "Audio Output" with prompt "Sélectionner un appareil" without multiple selections allowed
if answer is false then return
do shell script "/Applications/Audiodevice/audiodevice output " & quoted form of item 1 of answer

(Note : vous devez placer le fichier audiodevice dans /Applications)

51voto

Mateusz Szlosek Points 21762

Il y a switchaudio-osx, une commande qui doit être compilée à partir des sources ou qui peut être installée via homebrew (installation de Xcode requise) :

brew install switchaudio-osx

Utilisation :

SwitchAudioSource [-a] [-c] [-t type] [-n] -s nom_du_dispositif
  • -a : affiche tous les dispositifs
  • -c : affiche le dispositif actuel
  • -t type : type de dispositif (entrée/sortie/système). Par défaut, il s'agit de la sortie.
  • -n : passe au dispositif audio suivant
  • -s nom_du_dispositif : définit le dispositif audio sur le dispositif donné par son nom

0 votes

Je vais essayer d'installer ceci en utilisant homebrew avec brew install switchaudio-osx mais il signale: switchaudio-osx: Une installation complète de Xcode.app est nécessaire pour compiler ce logiciel. L'installation uniquement des Command Line Tools n'est pas suffisante. Xcode peut être installé depuis l'App Store. Erreur: Une exigence non satisfaite a entraîné l'échec de cette construction. Y a-t-il un moyen de contourner cela ?

0 votes

La procédure de construction de switchaudio-osx repose sur les dépendances, etc. définies dans Xcode (l'application). Quelqu'un qui s'y connait mieux que moi en Xcode pourrait probablement les extraire dans un Makefile.

2 votes

@Ze'ev Ou vous évaluez les risques impliqués et obtenez la version que je viens de compiler à partir de mon Dropbox dl.dropboxusercontent.com/u/3188370/SwitchAudioSource

6voto

Mateusz Szlosek Points 21762

Il existe une commande audiodevice disponible sur whoshacks.

Utilisation :

  • audiodevice lister les périphériques pour l'entrée, la sortie et l'audio système
  • audiodevice afficher le périphérique audio pour le port sélectionné
  • audiodevice list lister les périphériques audio disponibles pour le port sélectionné
  • audiodevice définir le port sélectionné pour utiliser le périphérique désigné ("internal" sélectionnera les haut-parleurs internes ou les écouteurs, selon ce qui est actif)

2 votes

Semble qu'il ait cessé de fonctionner sous Catalina en raison de l'abandon des applications 32 bits.

2voto

Voici un AppleScript pour le faire avec switchaudio-osx (remplacez simplement les XXXXXXX par le nom du périphérique que vous pouvez obtenir en exécutant "SwitchAudioSource -a") :

on run {input, parameters}

    do shell script "/usr/local/bin/SwitchAudioSource -s 'XXXXXXXX'"

    return input
end run

1 votes

J'ai remplacé le chemin pour pointer vers /usr/local/bin au lieu du répertoire Homebrew versionné. Sinon, le script ne fonctionnera plus si switchaudio-osx est mis à jour.

2voto

Dustin Points 41

J'avais besoin d'un raccourci clavier pour changer ma sortie audio - J'aimais la simplicité des réponses AppleScript que j'ai vues sur les forums Stack Exchange, mais je n'aime pas l'idée de devoir coder en dur le nom du périphérique de sortie/entrée que je veux changer. De plus, je n'ai pas trouvé de solution élégante pour basculer entre 3 sorties audio en utilisant des if-else. Sans parler du fait que la source n'est pas toujours dans la liste de sortie (par exemple, des écouteurs Bluetooth).

Alors j'ai écrit ce qui suit qui va simplement boucler à travers toutes les options et sélectionner la source suivante dans la liste / la première source dans la liste si la dernière option est sélectionnée. Il suffit de changer la variable sourceToChange de "Output" à "Input" si vous souhaitez créer un autre script pour échanger les sources de microphone. Un inconvénient de cette approche est que vous devez accorder l'accès à "Contrôler votre ordinateur" pour toute application qui appelle ce flux de travail / action rapide. Je suppose que cela a quelque chose à voir avec l'appel de l'application "Événements système" mais je n'en suis pas sûr à 100 %. Pas plus sûr de la sécurité. Néanmoins, j'espère que cela aidera certaines personnes. Cela fonctionne pour moi !

# boucler à travers toutes les sorties audio dans "Préférences système" > "Son" > "Output"/"Input"

sur run {input, paramètres}

    set sourceToChange à "Output" # changez-moi en "Input" ou "Output" !

    dire à l'application "Préférences système"
        run
        ensemble actuel pane to pane "com.apple.preference.sound"

    end tell

    dire à l'application "Événements système"

        dire au processus d'application "Préférences système"

            répéter jusqu'à ce que l'onglet groupe 1 existe de la fenêtre "Son" #empêcher le script de s'exécuter avant le chargement de Sound

            fin répétée

            dire au groupe d'onglets 1 de la fenêtre "Son"

                cliquer sur le bouton radio sourceToChange
                set soundOutputs to une référence à chaque ligne du tableau 1 de la zone de défilement 1
                ensemble activateSound à faux
                ensemble exitMe à faux

                répéter avec i de 1 à count of soundOutputs

                    si activateSound est vrai alors

                        ensemble exitMe à vrai
                        ensemble sélection de la ligne i du tableau 1 de la zone de défilement 1 à vrai

                        # si tentative de définir le saut de ligne avant les périphériques AirPlay à true, définir la première ligne à true et sortir
                        si (non sélectionné de la ligne i du tableau 1 de la zone de défilement 1) alors
                            ensemble sélection de la ligne 1 du tableau 1 de la zone de défilement 1 à vrai

                        fin si

                    fin si

                    si (sélectionné de la ligne i du tableau 1 de la zone de défilement 1) et (activateSound est false) et (exitMe est faux) alors
                        ensemble activateSound à true

                    fin si

                    si exitMe est vrai alors
                        retourner

                    fin si

                fin répéter

                # L'entrée ne souffre pas du problème de saut de ligne AirPlay, alors cela attrape une tentative de sortie à la dernière ligne avant de définir la sélection sur le premier élément
                ensemble sélection de la ligne 1 du tableau 1 de la zone de défilement 1 à vrai

            end tell
        end tell
    end tell
finir run

1 votes

Pour répondre exactement à ce besoin, l'utilitaire switchaudio-osx a été mis à jour pour prendre en charge le passage au périphérique audio suivant. Après l'installation avec Homebrew, il suffit d'appeler SwitchAudioSource -n pour passer au périphérique suivant. Cela évite de devoir coder en dur les noms des périphériques, mais évite également de devoir maintenir des interactions complexes via des scripts en AppleScript.

1voto

arun6582 Points 31

https://github.com/deweller/switchaudio-osx

Pour l'installation, ouvrez le terminal et exécutez brew install switchaudio-osx

Pour lister toutes les sources d'entrée / de sortie, exécutez SwitchAudioSource -a

Ceci produira une sortie similaire à

Microphone externe (entrée)
Microphone MacBook Pro (entrée)
Écouteurs externes (sortie)
Haut-parleurs MacBook Pro (sortie)

Pour passer le microphone à Microphone externe, exécutez la commande suivante

SwitchAudioSource -t input -s 'Microphone externe'

https://appsnomad.com/blog/how-to-change-audio-output-input-from-terminal-in-osx/3

4 votes

Cette réponse n'est pas différente de la réponse la plus votée par Mateusz Szlosek

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X