我已经设置了一个脚本,该脚本执行 mplayer 命令,以便在 crontab 中播放音频。它将在特定时间执行,但当 ncmpcpp(mpd 的前端,又名音乐播放器守护程序)播放音乐时,此脚本无法播放音频。但是当我从终端执行此脚本时,它可以播放音频,如下所示:
sh bin/alarm.sh
我尝试从 crontab 或脚本获取输出,但无济于事。我猜 ncmpcpp 或 mplayer 中的某些设置有误,或者 mpd 使用与 crontab 守护进程相同的守护进程。
- 无论如何,我找不到解决方案。如果你知道,请帮助我。
答案1
问题似乎是 mpd 默认在用户 mpd 下运行(作为系统守护进程),因此无法加入您的会话的 pulseaudio 混音器,因此它会通过 alsa 甚至 oss 占用声卡输出。在我的回答中,我假设您已登录,并且 crontab 是您的,而不是系统 crontab。
多普勒
根据您的优先级,您有很多选择,这些选择大多围绕着教 mpd 不要独占声音,而是使用 pulseaudio。请参阅mpd 维基。
播放器
ao=pulse
您可以通过放置一行来将 mplayer 配置为默认使用 pulseaudio ~/.mplayer/config
,但 pulseaudio 应该可以通过其 alsa 插件很好地接收它。
答案2
在您的 crontab 中,请将其添加到命令部分
export DISPLAY=:0.0 && sh /bin/alarm.sh
是export DISPLAY=:0.0
运行图形应用程序所必需的。
答案3
当使用例如play
(来自sox
包)时,需要导出以下信息:
export DISPLAY=:0
export XAUTHORITY=/home/YOURUSERNAME/.Xauthority
答案4
XDG_RUNTIME_DIR=/run/user/$(id -u) <sound command>
还请查看下面的链接,因为可能需要其他变量: