gpt4 book ai didi

python - 通过 Cron 作业的音频

转载 作者:行者123 更新时间:2023-12-02 23:06:08 24 4
gpt4 key购买 nike

有谁知道为什么音频不会通过 cron 作业运行,即使它在通过命令行运行时运行得非常好。我有一个通过蓝牙扬声器播放音频的 python 脚本,当我在命令行(python helper.py)上运行它时,它运行良好,但通过 cron 运行它似乎不起作用。

额外细节:

我在连接到蓝牙扬声器的 Raspberry Pi 上执行此操作。
我有一个连接到树莓派的显示器(不是 headless ,但这是最终目标)

这是我的音频测试代码

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')

编辑已解决!:
这个另一个问题完全解决了这个问题。
Audio doesn't play with crontab on Raspberry Pi

最佳答案

问题可能出在很多地方,因此以下步骤应该有助于确定 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运行然后你应该能够让你的音乐播放器运行。

其他一些注意事项:
  • Cron 通常会将命令的输出通过电子邮件发送给您,这应该会有所帮助。您可能需要在 Pi 上安装一个简单的文本邮件客户端才能获得它(我很老派,所以喜欢 mailx)。
  • 如前所述,我不懂 Python,但你的程序结束 看起来像 它在一个紧密的循环中等待 get_busy()是假的。至少我会在这里插入某种形式的 sleep ,或者寻找更好的方法。

  • 祝你好运。

    关于python - 通过 Cron 作业的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482003/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com