Python脚本不会像cgi那样播放声音,而是通过命令行播放声音

时间:2017-07-10 23:31:42

标签: python audio raspberry-pi

下面显示的CGI python脚本sound.py通过连接到Raspberry音频输出的扬声器播放声音。当我从命令行通过“python sound.py”执行脚本时,声音播放正常。但是,当我尝试通过Web(http://192.168.1.246/cgi-bin/sound.py)调用它作为cgi脚本触发它时,声音将无法播放,浏览器将只显示“Hi Hello World!”(我想, ,表示服务器至少将其识别为CGI脚本并执行它而不产生错误)。

我认为这个问题可能与声音文件的权限/所有权有关,并且对这些问题进行了修改,但这没有帮助(我也粘贴了有关脚本本身的所有权和权限的信息) ,和声音文件)。

非常感谢你的帮助!

马克。

-rwxrwxrwx 1 root root 441 Jul 10 23:23 sound.py -rwxr-xr-x 1 root root 29812 Jul 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!"

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题: sudo usermod -aG audio www-data 然后重新启动apache。

问题在于,我引用了网络上的elsewhere,"声音设备(在/ dev / snd /中)只能由群组成员访问" audio&#34 ;。 pi是该组的成员,而www-data不是。"

感谢所有提供帮助的人。