我看了这个问题:pyaudio help play a file
虽然这个问题确实得到了回答,但我从来没有明确回答过将歌曲文件放在哪里。
这是播放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)没有播放任何内容。
答案 0 :(得分:1)
我对pyaudio一无所知,但很明显,歌曲文件是执行时传递给程序的第一个参数。请看这一行:wf = wave.open(sys.argv[1], 'rb')
只需更改为sys.arg[1]
至'c:/filename.wav'
或其他内容。
如果你没有传递任何参数,程序将不会像现在一样运行。由于if len(sys.argv) < 2
块
答案 1 :(得分:1)
神奇的界限是:
wf = wave.open(sys.argv[1], 'rb')
这似乎表明脚本的第一个参数(sys.argv[1]
)被用作wave的输入。
答案 2 :(得分:0)
这是一个解决方案: 注释If Statment并直接添加要播放的文件名
import pyaudio
import wave
import sys
CHUNK = 1024
#if len(sys.argv) < 2:
# print("Plays a wave file.\n\nUsage: %s output.wav" % sys.argv[0])
# sys.exit(-1)
wf = wave.open("output.wav", 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()