デフォルト出力デバイスなし -9996: Djangoでサウンドを再生

デフォルト出力デバイスなし -9996: Djangoでサウンドを再生

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このグループのメンバーである必要があることを意味します。

関連情報