gpt4 book ai didi

python - 除非以 super 用户身份运行,否则Pygame音频将无法正常启动

转载 作者:行者123 更新时间:2023-12-03 01:27:20 25 4
gpt4 key购买 nike

因此,我正在开发一个作为Homebridge自动化项目的一部分运行的闹钟项目,并且正在编写将执行实际声音警报的python脚本。该脚本将由homebridge启动,然后播放所有播放声音和打sn等声音。基本上我现在正在做的就是播放声音。我编写了以下简单的脚本,该脚本使用pygame作为音频播放器,以便将来的状态机可以照顾贪睡按钮等。

import pygame
import time

files = ['s1.mp3']

pygame.mixer.init()
pygame.init()






stepper = 0
#file loading
while stepper < len(files):
pygame.mixer.music.load(files[stepper])
print("Playing:",files[stepper])
stepper += 1
pygame.mixer.music.play()
#play and pause
while pygame.mixer.music.get_busy():
timer = pygame.mixer.music.get_pos()
time.sleep(1)
control = input("enter control: ")
pygame.time.Clock().tick(10)
if control == "pause":
pygame.mixer.music.pause()
elif control == "play" :
pygame.mixer.music.unpause()
elif control == "time":
timer = pygame.mixer.music.get_pos()
timer = timer/1000
print (str(timer))
elif control == "exit":
print ("True")
pygame.mixer.music.stop()
break
else:
continue


当我在Windows上运行此程序时,效果很好。我可以播放,暂停,查看时间,最重要的是,可以听到声音。但是,当我将它移到我的树莓派上时,它死了,但是只有当它由普通用户启动时才会出现此错误
Hello from the pygame community. https://www.pygame.org/contribute.html
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM default
Traceback (most recent call last):
File "musictest.py", line 6, in <module>
pygame.mixer.init()
pygame.error: No available audio device

如果我以root用户身份(即 sudo python ./musicTest.py)运行,则没有问题,声音会播放。我希望不必以 super 用户身份运行此脚本,也不必真正需要这样做。也许我在这里遗漏了一些东西,但这实际上是必要的,但是我希望对您有所帮助。

到目前为止,我已经尝试更新所有驱动程序和软件包,以查看是否可以解决问题。一旦意识到它可以作为root用户工作,我就停止尝试,这意味着软件可以正常工作,只是存在某种权限问题。我可以同时从HDMI和耳机端口播放音频。这不是卷的问题,因为它也可以作为根。

我也尝试过 this页面,但这也没有解决。如果有人有任何想法,我可以公开提出所有建议或解释,为什么我必须使用sudo :)谢谢!

附言我正在安装今天在树莓派2 B +上运行的raspbain lite的新镜像,我正在使用python 3.7.3和pygame 1.9。似乎无法找到确切的数字。

最佳答案

因此,我做了一些修改,发现问题仅在我的用户登录到控制台时才发生。我试图通过SSH播放音乐,或者更确切地说,通过ssh启动脚本。事实证明,解决方法是将用户添加到音频组中,使他们即使没有登录也可以使用音频驱动程序。这可以通过使用sudo adduser $USER audio命令来完成。但是,我用用户(cbearda3)替换了$ USER。一旦意识到问题仅在于ssh,我就在另一个stack overflow post上找到了它。这是我的解决方案,尽管我意识到我的用例非常具体,但我想我会为以后遇到此问题的任何人记录下来。

关于python - 除非以 super 用户身份运行,否则Pygame音频将无法正常启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59443065/

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