¿Como reproducir un sonido en terminal con bajos recursos?
Hola
Tengo un servidor que actualmente hace la funcion de Proxy cache, pero tambien lo quiero usar como sistema de vigilancia con la ayuda de "Motion".
Este programa, al detectar el movimiento en alguna cámara, es capaz de activar un script sh.
Tengo pensado usar esta función para activar un sonido de alarma.
El servidor corre en modo consola, por lo que necesito algún reproductor de sonidos en consola de bajos recursos, ya que esta maquina solo tiene 512 MB de ram que en su mayor parte ya están en uso por el Squid.
Necesito que se reproduzca el sonido y además sea cíclico, ya que es un tono de alarma de algunos segundos de dirección.
¿Que reproductor en consola me recomiendan para esto?
Yo habia pensado en usar el comando "Speaker-test", que es capaz de reproducir sonidos .wav, y me imagino que con pocos recursos.
En el man del comando viene como hacer esto, pero no logro reproducir el sonido .wav:
Description
speaker-test generates a tone that can be used to test the speakers of a computer.
Options
-c | --channels NUM
NUM channels in stream
-D | --device NAME
PCM device name NAME
-f | --frequency FREQ
sine wave of FREQ Hz
--help
Print usage help
-b | --buffer TIME
Use buffer size of TIME microseconds. When 0 is given, use the maximal buffer size. The default value is 0.
-p | --period TIME
Use period size of TIME microseconds. When 0 is given, the periods given by -P option is used. The default value is 0.
-P | --nperiods ERIODS
Use number of periods. The default value is 4.
-r | --rate RATE
stream of RATE Hz
-t | --test pink|sine|wav
-t pink means use pink noise (default).
Pink noise is perceptually uniform noise -- that is, it sounds like every frequency at once. If you can hear any tone it may indicate resonances in your speaker system or room.
-t sine means to use sine wave.
-t wav means to play WAV files, either pre-defined files or given via -w option.
You can pass the number from 1 to 3 as a backward compatibility.
-l | --nloops COUNT
Specifies the number of loops. Zero means to run infinitely.
When -s option below with a valid channel is given, speaker-test will perform always a single-shot without looping.
-s | --speaker CHANNEL
Do a single-shot speaker test for the given channel. The channel number starts from 1. The channel number corresponds to left, right, rear-left, rear-right, center, LFE, side-left, side-right, and so on.
For example, when 1 is passed, it tests the left channel only once rather than both channels with looping.
-w | --wavfile
Use the given WAV file for the playback instead of pre-defined WAV files.
-W | --wavdir
Specify the directory containing WAV files for playback. The default path is /usr/share/sounds/alsa.
Saludos!
- Inicie sesión o regístrese para enviar comentarios
- 503 lecturas


Aplay.
$man aplayYa mas sofisticado
MOC
Mpd
Hay varios modos de que se reproduzca un sonido ciclicamente.Podes configurar un script en bash.
Edito:Mas básico es 'beep', podes configurar a nivel básico frecuencia duración ,etc.
http://www.javcasta.com/2010/10/31/scripting-beep-en-bash-linux/
Ya estoy mas que oxidado en programación.
Así que... configuro un ciclo while (O su equivalente en bash), pero este es en función de una variable.
La terminal me da alguna variable de la que me pueda valer para comenzar y repetir el ciclo?.
Hay algún ciclo que no necesite variables?
Ya estoy mas que oxidado en programación.
Así que... configuro un ciclo while (O su equivalente en bash), pero este es en función de una variable.
La terminal me da alguna variable de la que me pueda valer para comenzar y repetir el ciclo?.
Hay algún ciclo que no necesite variables?
Concretamente ¿vos queres que cuando se dispare la alarma produzca un sonido dado una cierta cantidad de veces y luego cese ?
Funciona!
#! /bin/bash
INPUT_STRING=hello
while [ "$INPUT_STRING" != "bye" ]
do
aplay /home/server/Escritorio/alarm.wav
done;
Aunque si caliban, lo mejor seria que solo se reprodujera algunas veces, ya que el mio es infinito.
Reproducir sonido en terminal con bajos recursos
echo -e "\a"XD
Con "beep"
k=("beep -f900 -l200 --new -f700 -l200")m=0
while [ $m -ne 10 ]
do
$k
m=$(( $m + 1 ))
done
Un último comentario: MOC y Mpd están muy bien como reproductores de escritorio, y de hecho yo utilizo MOC únicamente. Sin embargo, me da la impresión de que son demasiado complejos para esto. Yo habría tirado por ogg123.
Aunque si caliban, lo mejor seria que solo se reprodujera algunas veces, ya que el mio es infinito.
#! /bin/bashINPUT_STRING=hello
reproducciones=0
while [ "$INPUT_STRING" != "bye" ]
do
ogg123 /ruta/sonido.ogg
reproducciones= expr $reproducciones + 1
if test $reproducciones > 100
then
exit
fi
done
Ok Gracias a todos.
Suku instale beep e intente correr tu script, pero me da un error como este:
script2.sh
/home/server/Escritorio/script2.sh: 3: Syntax error: "(" unexpected
Y lo mismo con el script de Black Rider
/script2.sh: 12: Syntax error: "done" unexpected (expecting "fi")
Y porque prefieres ogg123 sobre aplay?
if , falta cerrar 'fi'
Cuidado con los espacios luego de '('
Es que se me ha caído la conexión antes de poder corregirlo. Lo siento.
#! /bin/bash
INPUT_STRING=hello
reproducciones=0
while [ "$INPUT_STRING" != "bye" ]
do
ogg123 /ruta/sonido
reproducciones=`expr $reproducciones + 1`
if [ $reproducciones = 10 ]
then
exit
fi
done