[英]Python script won't play sound as cgi, but via command line
下面显示的 CGI python 脚本 sound.py 通过连接到 Raspberry 音频 output 的扬声器播放声音。 当我通过“python sound.py”从命令行执行脚本时,声音播放良好。 但是,当我尝试通过 Web ( http://192.168.1.246/cgi-bin/sound.py ) 调用它作为 cgi 脚本触发它时,声音不会播放,浏览器只会显示“嗨,Hello World,”(我想这表明服务器至少将其识别为 CGI 脚本并执行它而不会产生错误)。
我认为这个问题可能与声音文件的权限/所有权有关,并对其进行了修改,但这并没有帮助(我还在下面粘贴了有关脚本本身的所有权和权限的信息,以及声音文件)。
非常感谢您的帮助!
马克。
-rwxrwxrwx 1 根 441 7 月 10 日 23:23 sound.py -rwxr-xr-x 1 根 29812 7 月 9 日 22:58 cardinal-short.mp3
脚本(sound.py):
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
cgitb.enable()
import pygame
name = "cardinal-short"
pygame.mixer.init()
pygame.mixer.music.load("/var/www/html/cgi-bin/cardinal-short.mp3")
pygame.mixer.music.play()
pygame.mixer.music.set_volume(1.0)
while (pygame.mixer.music.get_busy() == True):
continue
pygame.mixer.quit()
print "Content-Type: text/plain;charset=utf-8"
print
print "Hi Hello World!"
我能够通过以下方式解决此问题:
sudo usermod -aG audio www-data
然后重启 apache。
问题是,我从 web 的其他地方引用:
声音设备(在 /dev/snd/ 中)只能由“音频”组的成员访问。 pi 是该组的成员,而 www-data 不是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.