Me gustaría cambiar el dispositivo de salida de sonido (como opción-clic en el ícono del altavoz en la barra de menú) a través de un script, pero NO a través de scripts de interfaz de usuario, por ejemplo, iniciando el panel de preferencias del sistema.
ACTUALIZACIÓN: Usando la solución @Mateusz a continuación, aquí hay un Applescript que, cuando se inicia, le dará una ventana emergente para seleccionar el dispositivo de salida de audio deseado:
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 "Select a device" without multiple selections allowed
if answer is false then return
do shell script "/Applications/Audiodevice/audiodevice output " & quoted form of item 1 of answer
(Nota: necesita poner el audiodevice
archivo en /Applications
)
Hay un audiodevice
comando disponible de whoshacks .
Uso:
audiodevice
enumerar los dispositivos de entrada, salida y audio del sistemaaudiodevice <port>
mostrar el dispositivo de audio para el puerto seleccionadoaudiodevice <port> list
enumerar los dispositivos de audio disponibles para el puerto seleccionadoaudiodevice <port> <device>
configurar el puerto seleccionado para usar el dispositivo designado ("interno" seleccionará altavoces internos o auriculares, lo que esté activo)Hay switchaudio-osx , comando que debe compilarse a partir de fuentes o puede instalarse a través de homebrew (se requiere instalación de Xcode):
brew install switchaudio-osx
Uso:
SwitchAudioSource [-a] [-c] [-t type] [-n] -s device_name
-a
: muestra todos los dispositivos-c
: muestra el dispositivo actual-t type
: tipo de dispositivo (entrada/salida/sistema). Por defecto a la salida.-n
: cambia el dispositivo de audio al siguiente-s device_name
: establece el dispositivo de audio en el dispositivo dado por nombrebrew install switchaudio-osx
pero informa: ¿ switchaudio-osx: A full installation of Xcode.app is required to compile this software. Installing just the Command Line Tools is not sufficient. Xcode can be installed from the App Store. Error: An unsatisfied requirement failed this build.
Alguna forma de evitar esto?switchaudio-osx
se basa en dependencias, etc. definidas en Xcode (la aplicación). Alguien que conozca Xcode mejor que yo probablemente podría extraerlos en un Makefile.mas
, luego xcode
, luego switchaudio-osx
. De esta manera, se beneficia del código fuente actualizado y no de un binario precompilado que potencialmente no es seguro o está desactualizado. Consulte: install-switchaudio.shbrew install switchaudio-osx
!Aquí hay un AppleScript para hacerlo con switchaudio-osx (simplemente reemplace XXXXXXX con el nombre del dispositivo que puede obtener al ejecutar "SwitchAudioSource -a"):
on run {input, parameters}
do shell script "/usr/local/bin/SwitchAudioSource -s 'XXXXXXXX'"
return input
end run
/usr/local/bin
en lugar del directorio Homebrew versionado. De lo contrario, el script ya no funcionará si switchaudio-osx
se actualiza.Necesitaba un atajo de teclado para cambiar mi salida de sonido. Me gustó la simplicidad de las respuestas de AppleScript que he visto en los foros de Stack Exchange, pero no me gusta la idea de tener que codificar el nombre del dispositivo de salida/entrada que quiero. cambiar. Además, no pude encontrar una solución elegante para intercambiar entre 3 salidas de audio usando if-else. Sin mencionar si la fuente no siempre está en la lista de salida (por ejemplo, auriculares bluetooth).
Así que escribí lo siguiente que simplemente recorrerá todas las opciones y seleccionará la siguiente fuente en la lista / la primera fuente en la lista si se selecciona la última opción. Simplemente cambie la sourceToChange
variable de "Salida" a "Entrada" si desea crear otro script para intercambiar fuentes de micrófono. Una desventaja de este enfoque es que debe otorgar acceso a "Controlar su computadora" para cualquier aplicación que llame a este flujo de trabajo / acción rápida. Supongo que tiene algo que ver con llamar a la aplicación "Eventos del sistema", pero no estoy al 100% en eso. Tampoco estoy 100% seguro sobre la seguridad Sin embargo, espero que ayude a algunas personas. ¡Esto funciona para mi!
# loop thru all sound outputs in "System Preferences" > "Sound" > "Output"/"Input"
on run {input, parameters}
set sourceToChange to "Output" # change me to "Input" or "Output"!
tell application "System Preferences"
run
set current pane to pane "com.apple.preference.sound"
end tell
tell application "System Events"
tell application process "System Preferences"
repeat until exists tab group 1 of window "Sound" # prevent script from executing before Sound load
end repeat
tell tab group 1 of window "Sound"
click radio button sourceToChange
set soundOutputs to a reference to every row of table 1 of scroll area 1
set activateSound to false
set exitMe to false
repeat with i from 1 to count of soundOutputs
if activateSound is true then
set exitMe to true
set selected of row i of table 1 of scroll area 1 to true
# if attempted to set the line break before AirPlay devices to true, set the first row to true and exit
if (not selected of row i of table 1 of scroll area 1) then
set selected of row 1 of table 1 of scroll area 1 to true
end if
end if
if (selected of row i of table 1 of scroll area 1) and (activateSound is false) and (exitMe is false) then
set activateSound to true
end if
if exitMe is true then
return
end if
end repeat
# Input doesn't suffer from the AirPlay linebreak issue so this catches an attempt to exit at the last row before setting selected to the first item
set selected of row 1 of table 1 of scroll area 1 to true
end tell
end tell
end tell
end run
switchaudio-osx
utilidad se actualizó para admitir ahora el ciclo al siguiente dispositivo de audio. Después de instalar con homebrew, simplemente llame SwitchAudioSource -n
para pasar al siguiente dispositivo. Esto evita la necesidad de un núcleo duro en los nombres de los dispositivos, pero también evita la necesidad de mantener complicadas interacciones de interfaz de usuario con secuencias de comandos en AppleScript.https://github.com/deweller/switchaudio-osx
Para instalar abrir terminal y ejecutarbrew install switchaudio-osx
Para enumerar todas las fuentes para la ejecución de entrada/salidaSwitchAudioSource -a
Esto producirá una salida similar a
External Microphone (input)
MacBook Pro Microphone (input)
External Headphones (output)
MacBook Pro Speakers (output)
Para cambiar el micrófono a un problema de micrófono externo siguiendo el comando
SwitchAudioSource -t input -s 'External Microphone'
https://appsnomad.com/blog/how-to-change-audio-output-input-from-terminal-in-osx/3
Hay una aplicación paga de aloe de $ 5 llamada Ears que hará el trabajo y se puede usar con la línea de comando https://retina.studio/ears/
jerry t