Nenhum dispositivo de saída padrão -9996: reproduzindo som através do Django

3

Estou enfrentando um problema com o meu Raspberry Pi ao reproduzir um som em uma página da web. A página é construída com o Django e é bastante simples: você aperta um botão e um som é tocado (um script Python é executado). Eu testei em um Debian 7 em um ambiente VirtualBox com sucesso, mas depois decidi mudar para o meu Pi.

Tudo correu bem, mas quando clico no botão "play", recebo um erro 500 com a seguinte mensagem:

IOError at /alarma/triggerAlarm [Errno Invalid output device (no default output device)] -9996 Request Method:

  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

Eu tentei reproduzir o arquivo manualmente no console python sem problemas, mas quando tento fazer isso através do django, parece que não pode.

Eu acho que o problema está relacionado com isso:

Ouput from aplay -L:

null
Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=ALSA
bcm2835 ALSA, bcm2835 ALSA
Default Audio Device

Procurei no Google e tentei várias soluções, como criar um arquivo asound.conf no diretório inicial, mas nenhuma delas funcionou. Eu realmente não entendo porque o som está funcionando a partir do comando aplay e do shell python, mas não enquanto o script python é executado pelo Django.

    
por cabreracanal 25.10.2013 / 12:32

1 resposta

1

Um processo que queira reproduzir sons deve poder acessar os nós do dispositivo em /dev/snd/ (e ler os arquivos em /usr/share/alsa/ ).

Nesse caso, isso significa que o usuário do servidor da Web deve se tornar membro do grupo audio .

    
por 28.10.2013 / 09:32