2017-07-10 8 views
1

以下に示すCGI pythonスクリプトsound.pyは、ラズベリーのオーディオ出力に接続されたスピーカーからサウンドを再生します。コマンドラインから "python sound.py"を使ってスクリプトを実行すると、サウンドは正常に再生されます。しかし、Web(http://192.168.1.246/cgi-bin/sound.py)で呼び出すことでcgiスクリプトとして起動しようとすると、サウンドは再生されず、ブラウザには「こんにちはワールド!」と表示されます(これは、サーバーは少なくともそれをCGIスクリプトとして認識し、エラーを出さずに実行します)。Pythonスクリプトはcgiとしてサウンドを再生しませんが、コマンドライン経由で

私はこの問題がサウンドファイルのパーミッション/所有権と関係しているかもしれないと思っていましたが、それは助けになりませんでした(私はスクリプトの所有権とパーミッションに関する情報も貼り付けていますそれ自体、およびサウンドファイル)。

ありがとうございました!

Marc。

-rwxrwxrwx 1ルートルート441 7月10日午後11時23分sound.py -rwxr-XR-X 1ルートルート29812 7月9日22時58カーディナル-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!" 
+0

'pygame'がX11やTTYなしで初期化されない場合、問題があります。あなたのstdoutとstderrをファイルに記録することは、始めるのに適しています。 –

+0

Webサーバーに音声が接続されていますか?あなたは、オーディオがウェブブラウザから再生されることを期待していますか? – user2357112

+0

@ user2357112 - Webサーバーにオーディオが接続されているかどうかはわかりません。これをどうやってチェックするのですか?ブラウザではなく、ラズベリーから音を出すようにしたい。 –

答えて

1

私は経由してこの問題を解決することができました: sudoのusermodの-agオーディオWWW-データ してからApacheを再起動します。

問題は、Web上のelsewhereから引用しています。「サウンドデバイス(/ dev/snd /内)は、グループ「オーディオ」のメンバーのみがアクセスできます。 www-データはそうではありません。

誰もが助けてくれたことに感謝します。

+1

元の著者にクレジットを与えることができるように、情報を取得した場所へのリンクを挿入するといいでしょう。 –

+0

@Andreaアドバイスをいただきありがとうございます。完了しました。 –

関連する問題