GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Ubuntu 14.04 e riprodurre brani da Cron?

Di recente ho aggiornato il mio computer a Ubuntu 14.04.

Dopo l'aggiornamento il sistema non riproduce più i pochi brani che avevo riprodotto tramite crontab.

Le linee crontab sembrano così:

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

Non ricevo errori da cron durante l'esecuzione del comando. Se eseguo il comando manualmente tramite SSH, il brano viene riprodotto correttamente.

Ho anteposto il comando in crontab con 'env' per avere una migliore comprensione dell'ambiente in cui cron esegue il lavoro:

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

Ciò ha generato il seguente output:

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

Per rendere la shell interattiva della mia connessione ssh più simile a quella in cui è in esecuzione cron, ho disattivato tutto tranne l'ambiente specificato:

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

E dopo quella modifica copia+incolla da crontab non produce più alcun suono. Tuttavia, il programma sembra riprodurre il file:

$ /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.

Questo mi porta a credere che il suono sia appena emesso sul dispositivo sbagliato.

Passare a una riproduzione quanto segue non produce alcun suono:

$ 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

Ma specificando questo dispositivo viene riprodotto tramite HDMI come 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

Come posso impostare quel dispositivo come predefinito di sistema?
(cosa che sembra essere ogni volta che ho un ambiente più ricco.)

In alternativa, come posso forzare mgp123 a utilizzare il dispositivo corretto?
Il dispositivo ALSA è plughw:CARD=NVidia,DEV=3 correlato a un dispositivo in /dev?

mpg123 ti consentirà di specificare un dispositivo particolare in questo modo:

   -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.

I dispositivi plughw in 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

Sembrano corrispondere ai dispositivi pcmC0D?p in /dev/snd:

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

Ma usarlo non sembra aiutare 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)

Non capisco davvero cosa siano ALSA e/o PulseAudio rispetto a questo.

Correlati:come mostrare sempre (o nascondere automaticamente) le voci di menu in Unity?

Nessuno dei due sembra funzionare nell'ambiente limitato:

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

Entrambi i comandi funzionano con variabili di ambiente "normali".

Ho scaricato ed eseguito alsa-info.sh, prima con l'ambiente "normale":

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

Quando ho provato a eseguirlo con la maggior parte delle variabili di ambiente non impostate, ho ricevuto un errore.

Dopo aver impostato:

export TERM=xterm

Ho riavviato lo script. Risultato qui:

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

MODIFICA:

Ulteriori indagini sull'annullamento dell'impostazione delle variabili di ambiente mostrano che devo solo annullare l'impostazione di XDG_RUNTIME_DIR per interrompere la riproduzione.

$ unset XDG_RUNTIME_DIR

EDIT2:

Se abbandono mgp123 per cvlc ottengo l'audio durante la riproduzione tramite crontab in questo modo:

 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

Risposta accettata:

In Mentre usi la connessione ssh , prova ad aggiungere il tuo utente nel gruppo "audio":
sudo usermod -aG audio username
riavvia e verifica che alsamixer sia ok, quindi puoi impostare i volumi:Probabilmente devi premere F6 per selezionare il 3° dispositivo.

Quindi, nel mio caso, posso leggere l'audio connesso tramite ssh su un PC remoto senza server X usando:

  • cvlc (che viene fornito con il pacchetto vlc-nox):
    cvlc --alsa-audio-device="hw:0,3" /usr/share/sounds/alsa/Front_Center.wav
    Se non va bene cambia hw:0,3 in hw:0,0 o hw:0,1
    Nel mio caso funziona anche tramite crontab.
  • mpg123:funziona anche lanciato tramite ssh:
    mpg123 -a hw:0,3 Musique/test.mp3

Si noti che nel mio caso, pulseaudio è disabilitato sul PC remoto (non sono sicuro che la disabilitazione sia utile poiché pulseaudio viene avviato tramite la sessione X e lightdm). Per verificare che pulseaudio sia disattivato e non si respawn automaticamente, esegui più volte killall -9 pulseaudio


Ubuntu
  1. Aggiornamento da Ubuntu 13.10 a Ubuntu 14.04

  2. Aggiornamento da Ubuntu 13.04 a Ubuntu 13.10

  3. Come sincronizzare data e ora dalla riga di comando in Ubuntu

  4. Come eseguire l'aggiornamento a Ubuntu 22.04 LTS da Ubuntu 20.04 LTS e 21.10

  5. Aggiornamento da Windows XP a Windows 7?

Come aggiornare da Ubuntu 20.04 a Ubuntu 22.04

Come montare/smontare manualmente un dispositivo USB su Ubuntu 20.04 e 22.04

Come estrarre l'audio dal video in Ubuntu e altre distribuzioni Linux

Come eseguire l'aggiornamento a Ubuntu 16.04 da Ubuntu 14.04 e 15.10

Come passare da GNOME a Unity in Ubuntu 18.04 e 17.10

Come eseguire l'aggiornamento a Ubuntu 22.04 Beta da 21.10 e 20.04 in questo momento