有谁知道为什么音频无法通过 cron 作业运行,即使它在通过命令行运行时运行得非常好。我有一个通过蓝牙扬声器播放音频的 python 脚本,当我在命令行(python helper.py)上运行它时,它播放得很好,但通过 cron 运行它似乎不起作用。
额外细节:
我正在连接到蓝牙扬声器的 Raspberry Pi 上执行此操作。 我有一个连接到树莓派的显示器(不是无头的,但这是最终目标)
这是我的音频测试代码
import pygame
from pygame import mixer
def playFile(filePath):
pygame.mixer.init()
pygame.mixer.music.load(filename)
pygame.mixer.music.play()
print('I am here')
while pygame.mixer.music.get_busy():
continue
playFile('/home/pi/AlarmClock/alarm2.ogg')
这包括我的音频播放函数的定义和实际的调用。
如果我可以提供更多信息来澄清这一点,请告诉我。
编辑1:
我已经考虑了一些建议并稍微修改了我的代码。
我的 crontab 现在如下所示
* * * * * /usr/bin/python /home/pi/AlarmClock/helper.py > /home/pi/AlarmClock/output.out
这只是将Python脚本的输出发送到文件output.out
helper.py 文件也更新了
import sys
import pygame
from pygame import mixer
#fp = open('/home/pi/AlarmClock/erurfile.txt', 'a')
#sys.stdout = sys.stderr = fp
print('at the top')
# Playing media files
def playFile(fileName):
pygame.mixer.init()
pygame.mixer.music.load(fileName)
pygame.mixer.music.play()
print('in the method')
while pygame.mixer.music.get_busy():
continue
print('about to run method')
playFile('/home/pi/AlarmClock/alarm2.ogg')
print('finished running method')
编辑已解决!: 这另一个问题完全解决了这个问题。 音频无法在 Raspberry Pi 上使用 crontab 播放
问题可能存在于很多地方,因此以下步骤应该有助于确定 ti 损坏的位置。
我将从创建一个 shell 脚本开始,从 cron 运行该脚本并检查它是否有效。 因此,创建一个名为
my_cron_job.sh
的文本文件,其中包含以下行:
#!/bin/sh
date >> /tmp/cron.log 2>> /tmp/cron.err
修改您的 cron 作业以运行
my_cron_job.sh
,每分钟您都应该在 /tmp/cron.log
文件中添加一个新行。 /tmp/cron.err
应为空。
下一个问题是“我们可以从 cron 运行 Python 脚本吗?”。 我不是 Python 人,所以我假设你有一个“HelloWorld.py”,其中包含以下内容:
print('Hello World')
我们现在需要从 cron 作业运行它,因此编辑
my_cron_job.sh
来阅读:
#!/bin/sh
python HelloWorld.py >> /tmp/cron.log 2>> /tmp/cron.err
当您检查
/tmp/cron.log
时,它现在应该每分钟都会出现“Hello World”。 如果情况并非如此,那么您需要找出原因,这可能是环境问题。 如果您需要添加到环境中,例如修改 PATH,然后在 python
命令之前执行此操作。
你可能有这样的想法:
#!/bin/sh
PATH=$PATH:/usr/local/bin
python HelloWorld.py >> /tmp/cron.log 2>> /tmp/cron.err
如果您可以让
HelloWorld.py
运行,那么您应该能够让您的音乐播放器运行。
其他一些注意事项:
get_busy()
为假。 至少我会在这里插入某种形式的睡眠,或者寻找更好的方法。祝你好运。
我刚刚遇到了类似的问题,我的程序使用pygame在我的pi上输出音频,pi设置为将音频发送到HDMI端口。 通过 Geany 运行或通过控制台启动时工作正常,但使用 cron 启动时没有声音。 结果发现系统运行正常,但将音频信号发送到音频端口,忽略了我的 pi 上的设置。 我花了一段时间才找到那个!