如何在PyAudio中播放歌曲?

1 投票
4 回答
5578 浏览
提问于 2025-04-17 12:35

我看了这个问题:pyaudio帮助播放文件

虽然这个问题得到了回答,但我始终没有搞清楚到底应该把歌曲文件放在哪里。


这是播放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做的程序),什么也没有播放。

4 个回答

1

我对Python和pyaudio了解得不多,但我发现当你运行这个程序时,歌曲文件是作为第一个参数传递给程序的。

只需要像这样更改并插入一个参数:

 python your-python_file.py sound_file.wav

祝好。

1

我对pyaudio不太了解,但看起来很明显,当你运行这个程序时,歌曲文件是第一个传给程序的参数。看看这一行:wf = wave.open(sys.argv[1], 'rb')。你只需要把sys.argv[1]改成'c:/filename.wav'或者其他文件名就可以了。

而且,如果你不传任何参数给程序,它是无法运行的,因为有一个if len(sys.argv) < 2的判断块。

1

这行神奇的代码是:

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

这段话的意思是,脚本的第一个参数(sys.argv[1])被用作波形的输入。

撰写回答