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
.
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.
Tags alsa django raspberry-pi