2012-02-08 15 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() 

ファイル自体。私のプログラムで "Play"ボタンを押すと(私はこのプログラムでwxformを使う)、何も再生されません。

答えて

1

私はpyaudioについて何も知らないが、あなたがそれを実行するときにプログラムに渡される最初の引数が曲ファイルであることははっきりしているようだ。この行を見てください:ちょうどsys.arg[1]から'c:/filename.wav'または何かに変更してください。

そして、引数を渡さないとプログラムは実行されません。そのためif len(sys.argv) < 2ブロック

+0

また、 'sys.argv [1]'が例外を発生させるためです。 –

+0

うん。しかし、その反省は、彼が "wf ="行を変更してもまだ音声が再生されていないという考えに基づいていました...もちろん、それは出力に現れます。 –

+0

ああ、はい、それを考慮しませんでした。私はちょうど彼がその 'if'ステートメントを取り除くのに十分スマートであると思ったのですが、私はそれほど確かではありません... –

1

魔法の行は次のとおりです。

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

これは、スクリプト(sys.argv[1])の最初の引数は、波の入力として使用されていることを言っているようです。

関連する問題