python 如何在PyAudio上播放歌曲?

0tdrvxhp  于 2023-02-07  发布在  Python
关注(0)|答案(4)|浏览(133)

我看了这个问题: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),什么也不播放。

2fjabf4q

2fjabf4q1#

神奇的台词是:

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

这似乎表明脚本的第一个参数(sys.argv[1])用作wave的输入。

lyr7nygr

lyr7nygr2#

我对pyaudio一无所知,但很明显,当你执行程序时,歌曲文件是传递给程序的第一个参数,看看这一行:就改成sys.arg[1]改成'c:/filename.wav'什么的。
如果你不给它传递任何参数,程序就不会像现在写的那样运行。

pokxtpni

pokxtpni3#

下面是一个解决方案:注解If语句,直接添加文件名播放

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()
bq9c1y66

bq9c1y664#

对python和pyaudio了解不多,但似乎歌曲文件是执行程序时传递给程序的第一个参数。
只需插入如下参数:

python your-python_file.py sound_file.wav

问候。

相关问题