2012-02-08 2 views
1

나는이 질문을 보았다 : pyaudio help play a filePyAudio에서 실제로 노래를 재생하려면 어떻게해야합니까?

이 질문은 내가 실제로 노래 파일을 넣을 위치에 대한 명확한 답을 얻지 못했지만 대답을 얻은 것이다.


은 WAVE 파일을 재생하기위한 코드입니다 : 내가 코드를 통해 검토 한하지만 난 실제로 음악을 삽입 코드에서 아무것도 찾을 수 없습니다

""" Play a WAVE file. """ 

import pyaudio 
import wave 
import sys 

chunk = 1024 

if len(sys.argv) < 2: 
    print "Plays a wave file.\n\n" +\ 
      "Usage: %s filename.wav" % sys.argv[0] 
    sys.exit(-1) 

wf = wave.open(sys.argv[1], 'rb') 

p = pyaudio.PyAudio() 

# open stream 
stream = p.open(format = 
       p.get_format_from_width(wf.getsampwidth()), 
       channels = wf.getnchannels(), 
       rate = wf.getframerate(), 
       output = True) 

# read data 
data = wf.readframes(chunk) 

# play stream 
while data != '': 
    stream.write(data) 
    data = wf.readframes(chunk) 

stream.close() 
p.terminate() 

파일 자체. 내 프로그램에서 "재생"버튼을 누르면 (이 프로그램에서 wxform을 사용함) 아무 것도 재생되지 않습니다.

답변

1

필자는 pyaudio에 대해 아무 것도 모른다.하지만 곡 파일이 실행될 때 프로그램에 전달되는 첫 번째 인수라는 것을 분명히 알 수있다. 이 라인을보십시오 : wf = wave.open(sys.argv[1], 'rb') 그냥 sys.arg[1] ~ 'c:/filename.wav' 또는 뭔가로 변경하십시오.

그리고 인수를 전달하지 않으면 프로그램이 지금 작성된대로 실행되지 않습니다. 때문에 if len(sys.argv) < 2 블록

+0

또한 sys.argv [1]이 (가) 예외를 발생시키기 때문에. –

+0

예. 그러나 그 반성은 그가'wf ='line을 바꾼 다음 여전히 오디오를 재생하지 못한다는 생각에 기초를 두었습니다 ... 물론 출력에 나타날 것입니다. –

+0

아, 그렇습니다. 고려하지 않았습니다. 나는 그가 단지'if' 문을 제거 할만큼 똑똑 할 것이라고 생각 했었지만 확신 할 수는 없다 ... –

1

마법의 라인이다 :

wf = wave.open(sys.argv[1], 'rb') 

이 스크립트 (sys.argv[1])에 대한 첫 번째 인수가 파도에 대한 입력으로 사용됩니다 말할 것 같다.

관련 문제