【发布时间】:2021-04-11 14:11:21
【问题描述】:
首先,我对这个库还很陌生,而且我并不是很了解所有内容。在互联网的帮助下,我设法让这个代码 sn-p 工作。此代码基本上播放音频文件(具体为.wav)。问题是它只播放一次。我希望音频文件循环播放,直到我将 is_looping 变量设置为 False。
import pyaudio
import wave
class AudioFile:
chunk = 1024
def __init__(self, file_dir):
""" Init audio stream """
self.wf = wave.open(file_dir, 'rb')
self.p = pyaudio.PyAudio()
self.stream = self.p.open(
format=self.p.get_format_from_width(self.wf.getsampwidth()),
channels=self.wf.getnchannels(),
rate=self.wf.getframerate(),
output=True
)
def play(self):
""" Play entire file """
data = self.wf.readframes(self.chunk)
while data != '':
self.stream.write(data)
data = self.wf.readframes(self.chunk)
def close(self):
""" Graceful shutdown """
self.stream.close()
self.p.terminate()
is_looping = True
audio = AudioFile("___.wav")
audio.play()
audio.close()
我试过做这样的事情,但还是不行:
is_looping = True
audio = AudioFile("___.wav")
while is_looping:
audio.play()
audio.close()
【问题讨论】:
-
这能回答你的问题吗? How to loop-play an audio with pyaudio?
-
我也看到了这个问题,但还是想不通,
-
简单的
while is_looping: audio.play()有什么问题? -
@Tomerikoo 由于某种原因它不起作用
-
所以请edit 将您的最佳尝试作为minimal reproducible example 包含在内,并解释它有什么问题
标签: python python-3.x pyaudio