Как я могу воспроизвести песню на PyAudio? - PullRequest
1 голос
/ 08 февраля 2012

Я посмотрел на этот вопрос: pyaudio help play файл

Хотя на этот вопрос все же ответили, я так и не получил четкого ответа о том, куда на самом деле поместить файл песни.


Это код для воспроизведения файла 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 с этой программой), ничего не воспроизводится.

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Я ничего не знаю о pyaudio, но кажется довольно ясным, что файл песни - это первый аргумент, который передается программе при ее запуске.Посмотрите на эту строку: wf = wave.open(sys.argv[1], 'rb') Просто измените на sys.arg[1] на 'c:/filename.wav' или что-то еще.

И программа не запустится, как написано сейчас, если вы не передадите ей аргумент.Из-за блока if len(sys.argv) < 2

1 голос
/ 08 февраля 2012

Волшебная линия:

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

Кажется, это говорит о том, что первый аргумент скрипта (sys.argv[1]) используется как вход для волн.

...