GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Ubuntu 14.04 y reproducir canciones de Cron?

Recientemente actualicé mi computadora a Ubuntu 14.04.

Después de la actualización, el sistema ya no reproduce las pocas canciones que tenía a través de crontab.

Las líneas crontab se ven así:

0 9   *   *   1-5       /usr/bin/mpg123 -q //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3

No recibo ningún error de cron al ejecutar el comando. Si ejecuto el comando manualmente a través de SSH, la canción se reproduce correctamente.

Preparé el comando en crontab con 'env' para obtener un mejor control del entorno bajo el cual cron ejecuta el trabajo:

0 9   *   *   1-5       env; /usr/bin/mpg123 //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3

Esto generó el siguiente resultado:

HOME=/home/user
LOGNAME=user
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/user
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
    version 1.16.0; written and copyright by Michael Hipp and others
    free software (LGPL) without any warranty but with best wishes

Directory: /home/user/Music/
Playing MPEG stream 1 of 1: song.mp3 ...

MPEG 1.0 layer III, 320 kbit/s, 44100 Hz stereo
Comment:  00000000 00000210 00000AA0 000000000058C5D0 00000000 00506FD7 00000000 00000000 00000000 00000000 00000000 00000000

[2:11] Decoding of song.mp3 finished

Para hacer que el shell interactivo de mi conexión ssh se asemeje más al que ejecuta cron, deshabilito todas las variables del entorno excepto las especificadas:

for a in `env | awk -F= '{ print $1 }' | grep -v "HOME\|LOGNAME\|PATH\|LANG\|SHELL\|PWD" | xargs`; do unset $a; done

Y después de ese cambio, copiar y pegar desde crontab ya no produce ningún sonido. Sin embargo, el programa parece reproducir el archivo:

$ /usr/bin/mpg123 //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.16.0; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Directory: /home/user/Music/
Playing MPEG stream 1 of 1: song.mp3 ...

MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

[2:51] Decoding of song.mp3 finished.

Haciéndome creer que el sonido se envía al dispositivo equivocado.

Cambiar a reproducir lo siguiente no produce ningún sonido:

$ aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Pero especificar este dispositivo se reproduce a través de HDMI según lo previsto:

$ aplay -D plughw:CARD=NVidia,DEV=3 /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

¿Cómo puedo configurar ese dispositivo como el predeterminado del sistema?
(Lo que parece ser cada vez que tengo un entorno más rico).

Alternativamente, ¿cómo puedo obligar a mgp123 a usar el dispositivo correcto?
¿El dispositivo ALSA plughw:CARD=NVidia,DEV=3 correlacionar con un dispositivo en /dev?

mpg123 le permitirá especificar un dispositivo en particular así:

   -a dev, --audiodevice dev
          Specify the audio device to use.  The default is system-dependent (usually /dev/audio or /dev/dsp).  Use this option if  you  have  multiple  audio
          devices and the default is not what you want.

Los dispositivos plughw en alsa:

$ aplay -L | grep plughw -A2
plughw:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=1
    HDA NVidia, ALC889A Digital
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Hardware device with all software conversions

Parece coincidir con los dispositivos pcmC0D?p en /dev/snd:

$ ls /dev/snd/ | egrep [013]p
pcmC0D0p
pcmC0D1p
pcmC0D3p

Pero usarlo no parece ayudar a mpg123:

$ /usr/bin/mpg123 -q -a /dev/snd/pcmC0D3p //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3
[oss.c:129] error: Can't reset audio!
[mpg123.c:690] error: ...in decoding next frame: Unable to set up output format! (code 1)

Realmente no entiendo qué es ALSA y/o PulseAudio con respecto a esto.

Relacionado:¿Cómo mostrar siempre (u ocultar automáticamente) los elementos del menú en Unity?

Ninguno parece funcionar en el entorno limitado:

$ pactl list cards
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
$ alsamixer
Error opening terminal: unknown.

Ambos comandos funcionan con variables de entorno "normales".

Descargué y ejecuté alsa-info.sh, primero con un entorno "normal":

http://www.alsa-project.org/db/?f=e2be8ceb9ef289ff9ef95557396dd82b88f337e0

Cuando traté de ejecutarlo con la mayoría de las variables de entorno sin configurar, recibí un error.

Después de configurar:

export TERM=xterm

Tengo el script ejecutándose de nuevo. Resultado aquí:

http://www.alsa-project.org/db/?f=67fdd80bd55c76cd6dd30c981bf02fe66ba3d9d6

EDITAR:

La investigación adicional de la desactivación de variables de entorno muestra que solo tengo que desactivar XDG_RUNTIME_DIR para interrumpir la reproducción.

$ unset XDG_RUNTIME_DIR

EDIT2:

Si abandono mgp123 por cvlc, obtengo un sonido cuando juego a través de crontab así:

 0 9  *   *    1-5      /usr/bin/cvlc -q --alsa-audio-device="hw:0,3" --play-and-exit //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3 2> /dev/null

Respuesta aceptada:

En Mientras usa la conexión ssh, intente agregar su usuario en el grupo "audio":
sudo usermod -aG audio username
reinicie y pruebe que alsamixer está bien, para que pueda configurar los volúmenes:probablemente tenga que presionar F6 para seleccionar el tercer dispositivo.

Entonces, en mi caso, puedo leer sonido conectado por ssh en una PC remota sin servidor X usando:

  • cvlc (que viene con el paquete vlc-nox):
    cvlc --alsa-audio-device="hw:0,3" /usr/share/sounds/alsa/Front_Center.wav
    Si no está bien, cambie hw:0,3 a hw:0,0 o hw:0,1
    En mi caso, también funciona a través de crontab.
  • mpg123:esto también funciona a través de ssh:
    mpg123 -a hw:0,3 Musique/test.mp3

Tenga en cuenta que, en mi caso, pulseaudio está deshabilitado en la PC remota (no estoy seguro de que la deshabilitación sea útil ya que pulseaudio se inicia a través de la sesión X y lightdm). Para verificar que pulseaudio está desactivado y no reaparece automáticamente, ejecute killall -9 pulseaudio varias veces


Ubuntu
  1. Actualizar de Ubuntu 13.10 a Ubuntu 14.04

  2. Actualizar de Ubuntu 13.04 a Ubuntu 13.10

  3. Cómo sincronizar fecha y hora desde la línea de comandos en Ubuntu

  4. Cómo actualizar a Ubuntu 15.10 desde Ubuntu 15.04

  5. ¿Instalar Ubuntu en USB y arrancar desde Destop con Uefi?

Cómo actualizar de Ubuntu 20.04 a Ubuntu 22.04

Cómo montar/desmontar manualmente un dispositivo USB en Ubuntu 20.04 y 22.04

Cómo extraer audio de video en Ubuntu y otras distribuciones de Linux

Cómo actualizar a Ubuntu 16.04 desde Ubuntu 14.04 y 15.10

Cómo cambiar de GNOME a Unity en Ubuntu 18.04 y 17.10

Cómo actualizar a Ubuntu 22.04 Beta desde 21.10 y 20.04 ahora mismo