Webページでサウンドを再生すると、Raspberry Piに問題があります。ページはDjangoで構築されており、非常に簡単です。ボタンを押すとサウンドが再生されます(Pythonスクリプトの実行)。 VirtualBox環境のDebian 7で正常にテストしましたが、Piに移行することにしました。
すべてがうまくいきますが、「再生」ボタンをクリックすると、次のメッセージで500エラーが発生します。
IOError [Errno出力デバイスが無効です(デフォルト出力デバイスなし)] -9996が/alarma/triggerAlarmで発生しました。リクエスト方法:
GET Request URL: ttp://localhost/alarma/triggerAlarm Django Version: 1.5.4
Exception Type: **IOError Exception Value: [Errno Invalid output device (no default output device)] -9996 Exception**
Location: /usr/local/lib/python2.7/dist-packages/pyaudio.py in __init__, line 442 Python
Executable: /usr/bin/python Python Version: 2.7.3 Python Path:
['/var/www/webapps/example_django/example',
'/var/www/webapps/example_django/bin',
'/usr/local/lib/python2.7/dist-packages',
'/var/www/webapps/example_django/example', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']
Server time: Sat, 19 Oct 2013 17:39:54 +0200
私は問題なくPythonコンソールでファイルを手動で再生してみましたが、djangoで再生しようとすると再生されないようです。
私は問題がこれに関連していると思います。
aplay -Lの出力:
null
Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=ALSA
bcm2835 ALSA, bcm2835 ALSA
Default Audio Device
Googleで検索してホームディレクトリにasound.confファイルを生成するなど、いくつかの解決策を試しましたが、何も機能しませんでした。私はなぜサウンドがaplayコマンドとPythonシェルを介して動作しますが、DjangoでPythonスクリプトを実行しても機能しないのは理解していません。
答え1
サウンドを再生したいプロセスは、デバイスノードにアクセスして/dev/snd/
ファイルを読み取ることができるはずです/usr/share/alsa/
。
この場合、これはWebサーバーのユーザーがaudio
このグループのメンバーである必要があることを意味します。