2011-05-25 16 views
9

Me gustaría saber si hay una forma programática (API pública, comando de terminal, AppleScript, etc.) para enumerar todos los procesos que se reproducen actualmente a través del sonido salida de sonido predeterminada en Mac OS 10.6?Cómo enumerar mediante programación los procesos que utilizan actualmente la salida de sonido predeterminada en Mac OS 10.6

Ya he intentado utilizar el comando de terminal "lsof | grep -i coreaudio" para enumerar los procesos que tienen un control en Core Audio, pero esto no me dice si esos procesos están emitiendo sonido actualmente; es posible que hayan emitido sonido antes o tengan la intención de hacerlo en el futuro.

Por ejemplo, si abro Google Chrome, al principio no aparece en la lista cuando uso el comando lsof. Luego, si cargo un video en Youtube, se conecta a Core Audio, por lo que aparece en la lista. Pero, cuando termine con el video, incluso si cierro completamente la ventana del navegador, todavía aparece como conectado al controlador, aunque obviamente ya no reproduce el sonido. Solo deja de aparecer en la lista cuando salgo del proceso.

Tenga en cuenta que si bien tengo una larga experiencia en programación en C++ en plataformas Windows y conozco bastante bien la API de Windows, soy bastante nuevo en la programación de Mac OS, así que comprenda si echo algo obvio.

Gracias, François Charron

+1

'lsof | grep -i coreaudio' era lo que necesitaba – aeb0

Respuesta

-1

sé que este post es bastante viejo, pero tiene algunos votos para que la gente podría encontrarse con él a través de consultas de búsqueda.

Estoy bastante seguro de que esto no es posible a menos que escriba un complemento de CoreAudio que se integra en cada proceso que utiliza CoreAudio. El trabajo es muy similar a la creación de una versión para Mac del Mezclador de volumen de Windows.

Hay una implementación de código abierto de esto (https://github.com/zonque/PulseAudioOSX) aunque no se ha mantenido y no he tenido mucha suerte en hacerlo construir. También hay soluciones patentadas como Prosoft Engineering's Hear que deberían poder hacer esto, pero no creo que proporcionen una API para consultar.

Nota: He creado MuteTab que intenta hacer lo mismo dentro de un navegador (antes de los cambios en Flash y la introducción de indicadores de audio) y ha creado mute.fm (Windows) que necesitaría esto así como una capacidad para controlar los volúmenes si lo porté para trabajar en OSX.

+0

Te estoy dando la respuesta para indicarme una implementación de código abierto. Desde que abandoné mi proyecto, da una buena pista sobre dónde buscar para encontrar una solución de trabajo. – franmon

Cuestiones relacionadas