¿Existe un programa predeterminado en el que pueda verificar si mis dispositivos de audio están en silencio?
Editar: Por silencio, quiero decir que si hay algo jugando en eso (no solo activado o abierto)
Algo como esto:
if [[ device0 is silent ]] ; then
radio $RANDOM
fi
Edición 2: lo que estoy tratando de lograr es un script que reproduzca la radio y pueda seguir reproduciéndose cuando el reproductor falla, por ejemplo, si la conexión a Internet se cae y el reproductor no se recuperó, mataré al jugador y comenzaré de nuevo
sox
. En otro caso puedes intentarlolsof|grep snd
. Si no hay nada, puede encender la radio.Respuestas:
Si está utilizando PulseAudio (las distribuciones de Linux basadas en Gnome tienden a usar PulseAudio, puede verificar si se está ejecutando una
ps -C pulseaudio
) y desea saber si algunas aplicaciones están enviando datos a algún "sumidero", puede hacer lo siguiente:Aún con PulseAudio, si desea verificar si su salida de sonido está silenciada, puede ser más simple, pero puede obtener el estado "silenciado" del "sumidero" predeterminado usando:
fuente
no
en cualquier situación, jugando o no)mplayer
), da enState: CORKED
lugar deState: RUNNING
en ese caso, por lo que aún funcionaría. Si la aplicación alimenta datos de silencio (está reproduciendo silencio), supongo que todavía se mostraríaRUNNING
, pero en ese caso, no veo otra alternativa que usar pamon en el dispositivo monitor de todos los sumideros y verificar el silencio.Si te entiendo bien, aquí un ejemplo:
Silencio:
Me pongo audaz:
Para OSS cambiar
/dev/snd/timer
a/dev/dsp
.Este es un método muy dependiente.
fuente
Suponiendo que está utilizando el mezclador ALSA para su sonido, puede utilizarlo
amixer
para consultar información sobre dispositivos de audio. Un dispositivo de audio generalmente tiene varios canales de audio, o controles, cada uno de los cuales puede silenciarse o no. Por ejemplo, para verificar si elMaster
control está silenciado, haría algo como:Use la
set
opción para realizar cosas en los controles. Verman amixer
para más ayuda.fuente
amixer
no funcionó, probé durante 15 minutos sin ningún jugador abierto, y todavía informa "no silenciado"La respuesta de htor probablemente funcionará, pero es muy posible que aparezca "off" en otra parte de la salida, lo que provocará un resultado incorrecto. Aquí hay una comprobación más estricta con GNU awk:
fuente
amixer
'S última línea no tiene$6
: ‘Mono: Reproducción [en]’. (amixer
versión 1.0.26) Quizás$NF
sería más portátil.