J'ai mis en place un script, qui exécute une commande mplayer, afin de lire l'audio dans crontab. Il sera exécuté dans un temps défini, mais ce script ne peut pas lire l'audio lorsque ncmpcpp (un frontal pour mpd, alias. Music Player Daemon) joue de la musique. Mais ce script peut lire de l'audio lorsque je l'exécute à partir d'un terminal comme celui-ci:
sh bin/alarm.sh
J'essaie d'obtenir la sortie de crontab ou de script, mais en vain. Je suppose que certains paramètres dans ncmpcpp ou mplayer sont incorrects, ou mpd utilise le même démon avec le démon de crontab.
Le problème semble être que mpd fonctionne sous l'utilisateur mpd par défaut (en tant que démon système) et n'est donc pas en mesure de rejoindre le mixeur pulseaudio de vos sessions, donc il monopolise la sortie de la carte son via alsa ou même oss. Dans ma réponse, je suppose que vous êtes connecté et que la crontab est la vôtre et non la crontab du système.
Selon vos priorités, vous avez beaucoup d'options qui tournent principalement autour de l'idée d'apprendre à mpd à ne pas monopoliser le son et à utiliser plutôt pulseaudio. Voir le mpd wiki .
Vous pouvez configurer mplayer par défaut sur pulseaudio en plaçant une ligne ao=Pulse
dans ~/.mplayer/config
mais pulseaudio devrait bien le capter avec son plugin alsa.
Dans votre crontab, veuillez l'ajouter à la section des commandes
export DISPLAY=:0.0 && sh /bin/alarm.sh
Le export DISPLAY=:0.0
est requis pour exécuter les applications graphiques.
XDG_RUNTIME_DIR=/run/user/$(id -u) <sound command>
Consultez également les liens ci-dessous, car d'autres versions peuvent être nécessaires:
mplayer ne peut pas lire l'audio depuis cron pendant que ncmpcpp joue simultanément
Lors de l'utilisation, par exemple play
(à partir du package sox
), les informations suivantes doivent être exportées:
export DISPLAY=:0
export XAUTHORITY=/home/YOURUSERNAME/.Xauthority