我有一个简单的命令
play -V4 /folder/file.ogg
在命令行上它工作完美
在 crontab 上
* * * * * klaus play -V4 /folder/file.ogg
它被触发(我可以在系统日志中看到它)但我听不到它。
CRON[4827]: (klaus) CMD (play -V4 /folder/file.ogg)
更新
crontab 给了我以下调试输出
play DBUG alsa: select_format: trying #2
play DBUG alsa: selecting format 2: S16_LE (Signed 16 bit Little Endian)
play INFO formats: can't set sample rate 44100; using 48000
Output File : 'default' (alsa)
Channels : 2
Sample Rate : 48000
Precision : 16-bit
Duration : 00:00:02.21 = 105984 samples ~ 165.6 CDDA sectors
Sample Encoding: 16-bit Signed Integer PCM
Endian Type : little
Reverse Nibbles: no
Reverse Bits : no
有效的命令行给了我
Output File : 'default' (pulseaudio)
Channels : 2
Sample Rate : 44100
Precision : 32-bit
Duration : 00:00:02.40 = 105984 samples = 180.245 CDDA sectors
Sample Encoding: 32-bit Signed Integer PCM
Endian Type : little
Reverse Nibbles: no
Reverse Bits : no
所以问题是来自 sox 包的这个 play 命令,它在命令上使用pulseaudio,在 crontab 上使用 alsa ...
the man of sox 没有显示如何指定 DRIVER,有什么提示吗?
答案1
播放器必须缺少初始化 PulseAudio 所需的一个或多个环境变量。最有可能的是 XDG_RUNTIME_DIR。
尝试将整个环境导出到文件 ( (env; echo 'play -V4 /folder/file.ogg') >script.sh
) 中并使用 cron 从 cron 运行它sh -a /path/to/script.sh
。如果有效,请查看可以删除哪些环境变量。