赞
踩
虽然pydub没有直接停止audioSegment播放的方法,但根据this documentation的说法,它将音频分成半秒钟的块,以便于键盘中断。在
因此,如果我们获取音频并在一个try-except块中运行while loop,我们应该能够使用“Ctrl+c”中断播放
下面是一个工作示例代码,它根据here中的文档将音频平移到左声道或右声道,然后使用上述逻辑在“Ctrl+c”上停止播放from pydub import AudioSegment
from pydub.playback import play
song = AudioSegment.from_wav("music.wav")
# pan the sound 15% to the right
panned_right = song.pan(+0.15)
# pan the sound 50% to the left
panned_left = song.pan(-0.50)
#Play panned left audio
while True:
try:
play(panned_left)
except KeyboardInterrupt:
print "Stopping playing"
break
我们从播放循环中断时得到空闲会话提示。你可以根据自己的需要量身定做。在
^{pr2}$
这使您可以轻松地在pydub内使用内置的平移方法,还可以中断播放的中间流。希望这能帮你解决问题。在
编辑-1
上述解决方案可能会遇到while循环将无限期播放的问题(如果您不中断它)。它可能只对测试有用。在
另一个选择是使用pythonmultiprocess模块生成一个进程,该进程在不需要时播放音频片段terminate。这样可以在播放过程中提供更多的控制。在
这里有一个例子。在from multiprocessing import Process
def play_audio(seg):
play(seg)
if __name__ == '__main__':
p = Process(target=play_audio, args=(panned_left,))
p.start()
当您需要停止音频时,只需在IDE或程序中调用p.terminate()。在Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
>>> p.terminate()
>>>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。