帮助使用 crontab 播放声音

帮助使用 crontab 播放声音

我想使用 crontab 每小时以及 15、30 和 45 分钟播放大本钟的录音。

到目前为止,我正在使用 mplayer2 和以下任务:

0 1,13 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_01.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_75
0 2,14 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_02.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_76
0 3,15 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_03.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_77
0 4,16 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_04.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_78
0 5,17 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_05.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_79
0 6,18 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_06.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_80
0 7,19 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_07.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_81
0 8,20 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_08.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_82
0 9,21 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_09.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_83
0 10,22 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_10.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_84
0 11,23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_11.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_85
0 0,12 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_12.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_86
15 0-23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_15-1.ogg -volume 100 >/dev/null 2>&1
30 0-23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_15-2.ogg -volume 100 >/dev/null 2>&1
45 0-23 * * * mplayer -really-quiet ~/bin/bigben    /Clock_Chime_15-3.ogg -volume 100 >/dev/null 2>&1

但大多数时候它不起作用。有时它确实会播放声音,但会延迟。也就是说,应该在 21:15 播放,但它在 21:17 没有播放。我打开一个终端,用 mplayer 播放另一个文件,播放结束后,我听到了应该在 2 分钟前播放的那个文件。

编辑:现在尝试: * * * * * "/usr/bin/mplayer -volume 100 --ao=pulse /home/myuser/bin/bigben/Clock_Chime_15-1.ogg"没有成功。

我确实感觉任务停留在某种提示中。

PS. 我可以分享声音文件。

答案1

根据这个答案:我可以使用 cron 像落地钟一样在整点时发出钟声吗?您需要在 cron 脚本中播放声音之前导出环境变量:

export XDG_RUNTIME_DIR="/run/user/1000"

因此,不要直接调用音乐播放器,而是crontab像这样调用脚本名称:

0 1,13 * * * /home/ME/bin/big-ben.sh /home/ME/bin/bigben/Clock_Chime_01.ogg >/dev/null 2>&1 # JOB_ID_75
    (... SNIP ...)
45 0-23 * * * /home/ME/bin/big-ben.sh /home/ME/bin/bigben/Clock_Chime_15-3.ogg >/dev/null 2>&1
  • 替换ME为您的用户名。
  • 您遇到了错误(最后一行中的之后/bigben和之前的空格。我已经修复了上述错误。/Clockcrontab
  • 您使用了不喜欢的快捷~/方式。请使用完整路径名。/home/MEcroncron

然后创建/usr/local/bin/big-ben.sh脚本:

#!/bin/bash
export XDG_RUNTIME_DIR="/run/user/1000"
mplayer -really-quiet "$1" -volume 100
  • crontab“$1”是入口传递给脚本的参数1

请记住使用以下命令将脚本标记为可执行:

chmod a+x /usr/local/bin/big-ben.sh

答案2

我使用以下命令播放声音文件:

 aplay ~/scripts/KenbeepBent.wav

我在 ~/scripts 目录中保存KenbeepBent.wav了一个声音文件,以便可以将其包含在 bash 脚本中。我希望它能满足您的需求。

答案3

只需在命令行末尾添加 &。这会强制程序在执行后退出。对我来说很管用

相关内容