2013-02-13 2 views
4
import pygame, time 
from pygame.locals import * 

soundObj = pygame.mixer.Sound('beeps.wav') 
soundObj.play() 

time.sleep(1) # wait and let the sound play for 1 second 
soundObj.stop() 

를 열 수 있으며이 오류가 발생합니다 :.파이 게임은 사운드 파일을

Traceback (most recent call last): 
    File "C:/Users/Jauhar/Desktop/Python/sounds.py", line 4, in <module> 
    soundObj = pygame.mixer.Sound('beeps.wav') 
pygame.error: Unable to open file 'beeps.wav' 

beeps.wav 파일은 코드에 파이썬 파일과 같은 디렉토리에 저장됩니다

내가 할 수있는을 왜 작동하지 않을지 이해하지 못합니다!

답변

4

당신이 사용하는 모듈이나 파이 게임의 모든 모듈을 초기화하지 않으면 파이 게임의 라이브러리를 사용할 수 없습니다.

pygame.mixer.pre_init(44100, 16, 2, 4096) #frequency, size, channels, buffersize 
    pygame.init() #turn all of pygame on. 

파이 게임에서 수행하기 전에 수행하십시오. 난 그것을 추천 해.

+0

어떤 이유로 든 문제가 해결되지 않습니다 – Alex

+0

형식 또는 기능 일 수 있습니다. 지원하지 않는 형식. Pygames의 유연성은 다소 제한적이며 실제로 작동하는 것이 제한 될 수 있습니다. 나는 이벤트와 OpenGL 윈도우에 대해서만 파이 게임을 사용한다. 내가 다시 소리를 들으면 아마 OpenAL을 사용할 것이다. – Kaliber64

+1

주파수가 파이 게임에 비해 너무 높았 기 때문에 무료 도구 중 하나를 사용하여 샘플링 속도를 줄였습니다 (128 bps와 같이). – Alex

0

이 정보를 기록하면 문제가 발생할 수 있습니다.

import os 
os.getcwd() # Log this line. 
soundObj = pygame.mixer.Sound('beeps.wav') 

이 응용 프로그램은 사운드 파일에 액세스하려고 할 때에 무엇을 찾고 디렉토리를 말해야한다. 게임 디렉토리 밑에있을 것입니다.

+0

도움을 주셔서 감사합니다. 은 내가 이것에 코드 수정 : pygame.locals에서 '수입 파이 게임, 시간, OS 을 가져 * 인쇄 (os.getcwd()) # 로그이 줄 soundObj = pygame.mixer.Sound ('경고음 일초 soundObj.stop()에 대한 .WAV ') soundObj.play() time.sleep (1) # 대기 및하자 소리 놀이' 당신은가에 위치를 찾고 그 권리에있어 내 게임 디렉토리의 기반. 아직 모든 것이 의도 한대로 작동하는 것처럼 보이지만 내 문제를 해결하는 방법은 아직 확실하지 않습니다. – user2066880

+0

파이 게임을 초기화해야합니다. 칼 리버의 대답을보십시오. 하위 디렉토리를 사용해야 할 경우'filename = os.path.join ("sounds", "beeps.wav")를 사용하십시오. – ninMonkey

0

비슷한 문제가있어서 .wav 파일의 크기가 문제가되는 것으로 나타났습니다. .wav 파일을 더 작게 설정하면 문제를 크게 수정하지 않고도 작업 할 수 있습니다.

0

사운드를 재생하기 전에 디스플레이 표면을 만들면 동일한 프로그램이 작동합니다.

#! Python 3 
''' 
Making games with python chapter 2 program 5 
''' 
import pygame, sys, time 
from pygame.locals import* 

pygame.init() 
DISPLAYSURF = pygame.display.set_mode((400, 300)) 
pygame.display.set_caption("Sound!!") 

soundObj = pygame.mixer.Sound('badswap.wav') 
soundObj.play() 
time.sleep(1) #wait and let the sound play for X second 
soundObj.stop() 

while True: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 
     pygame.display.update() 
3

Pygame (버전 2.9 이상)은 32 비트 float WAV를 지원하지 않습니다. 서명 된 16 비트 WAV로 다시 인코딩합니다 (예 : Audacity 사용).

0

pygame.init() 후에 사운드 파일을 가져 오십시오. 이 문제가 있었지만 사운드 파일을 배치 한 후에 나에게 잘 돌아갔습니다.

+0

귀하의 진술과 함께 할 몇 가지 샘플 코드는 매우 도움이 될 것입니다. –

관련 문제