기본 출력 장치 없음 -9996: Django를 통해 사운드 재생

기본 출력 장치 없음 -9996: Django를 통해 사운드 재생

웹 페이지를 통해 사운드를 재생할 때 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/.

이 경우 이는 웹 서버 사용자가 audio이 그룹의 구성원이어야 함을 의미합니다.

관련 정보