如何使用 playsound 模块停止音频?

新手上路,请多包涵

如何停止通过 Python 代码中的 playaudio 模块播放音频?我播放过音乐,但我无法停止那音乐。我怎样才能阻止它?

 playsound.playsound("name_of_file")

原文由 Kashish Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

Playsound 是一个单一的功能模块,只播放声音,仅此而已。这似乎意味着它也不会停止播放声音。从他们自己的文档:

playsound 模块只包含一件事——函数(也称为)playsound。

就个人而言,我喜欢使用 pyaudio 。以下代码改编自 此处 的示例。该代码播放音频并将空格键设置为暂停/播放按钮。

 import pyaudio
import wave
import time
from pynput import keyboard

paused = False    # global to track if the audio is paused
def on_press(key):
    global paused
    print (key)
    if key == keyboard.Key.space:
        if stream.is_stopped():     # time to play audio
            print ('play pressed')
            stream.start_stream()
            paused = False
            return False
        elif stream.is_active():   # time to pause audio
            print ('pause pressed')
            stream.stop_stream()
            paused = True
            return False
    return False

# you audio here
wf = wave.open('audio\\songs\\And_Your_Bird_Can_Sing_mp3_2_wav.wav', 'rb')

# instantiate PyAudio
p = pyaudio.PyAudio()

# define callback
def callback(in_data, frame_count, time_info, status):
    data = wf.readframes(frame_count)
    return (data, pyaudio.paContinue)

# open stream using callback
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True,
                stream_callback=callback)

# start the stream
stream.start_stream()

while stream.is_active() or paused==True:
    with keyboard.Listener(on_press=on_press) as listener:
        listener.join()
    time.sleep(0.1)

# stop stream
stream.stop_stream()
stream.close()
wf.close()

# close PyAudio
p.terminate()

原文由 user11563547 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用多处理模块作为后台进程播放声音,然后随时终止它:

 import multiprocessing
from playsound import playsound

p = multiprocessing.Process(target=playsound, args=("file.mp3",))
p.start()
input("press ENTER to stop playback")
p.terminate()

原文由 Aakash Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题