Я установил скрипт, который выполняет команду mplayer, для воспроизведения звука в crontab. Он будет выполнен в специальное установленное время, но этот скрипт не может воспроизводить звук, когда ncmpcpp (интерфейс для mpd, он же Music Player Daemon) воспроизводит музыку. Но этот скрипт может воспроизводить аудио, когда я запускаю его из терминала следующим образом:
sh bin/alarm.sh
Я пытаюсь получить вывод из crontab или скрипта, но безрезультатно. Я думаю, что некоторые настройки в ncmpcpp или mplayer неверны, или mpd использует тот же демон с демоном crontab.
При использовании, например, play
(из пакета sox
) необходимо экспортировать следующую информацию:
export DISPLAY=:0
export XAUTHORITY=/home/YOURUSERNAME/.Xauthority
Похоже, проблема в том, что mpd работает под пользователем mpd по умолчанию (в качестве системного демона) и, следовательно, не может присоединиться к микшеру pulseaudio ваших сеансов, поэтому он загружает вывод звуковой карты через alsa или даже oss. В своем ответе я предполагаю, что вы вошли в систему и что crontab принадлежит вам, а не системному crontab.
В зависимости от ваших приоритетов, у вас есть много вариантов, которые в основном вращаются вокруг идеи, обучающей mpd не включать звук и вместо этого использовать pulseaudio. См. mpd wiki .
Вы можете настроить mplayer по умолчанию на pulseaudio, поместив строку ao=pulse
в ~/.mplayer/config
, но pulseaudio должен подобрать ее с помощью плагина alsa.
XDG_RUNTIME_DIR=/run/user/$(id -u) <sound command>
Также посмотрите ссылки ниже, так как могут потребоваться другие переменные:
mplayer не может воспроизводить звук из cron, когда ncmpcpp воспроизводится одновременно
В вашем crontab, пожалуйста, добавьте это в раздел команд
export DISPLAY=:0.0 && sh /bin/alarm.sh
export DISPLAY=:0.0
требуется для запуска графических приложений.