как мне остановить воспроизведение звука через модуль playaudio в коде Python? как я могу это остановить
playsound.playsound("имя_файла")
как мне остановить воспроизведение звука через модуль playaudio в коде Python? как я могу это остановить
playsound.playsound("имя_файла")
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()
Вы можете использовать модуль multiprocessing для воспроизведения звука в качестве фонового процесса, а затем завершить его в любое время:
import multiprocessing
from playsound import playsound
p = multiprocessing.Process(target=playsound, args=("file.mp3",))
p.start()
input("press ENTER to stop playback")
p.terminate()
В Windows попробуйте: import winsound
winsound.PlaySound(r'C:\sound.wav', winsound.SND_ASYNC)
Остановить воспроизведение:
winsound.PlaySound(None, winsound.SND_PURGE)
Вот более простой способ:
wmp = win32com.client.dynamic.Dispatch("WMPlayer.OCX")
wmp.settings.autoStart = True
wmp.settings.volume = 100
wmp.URL = file
while globals()["allowSound"]:
PumpWaitingMessages()
Вы можете изменить globals()[allowSound] из другого потока и установить для него значение false, когда звук закончится (вы можете получить длину звука с помощью wmp.durationString)
Вот еще немного информации об этом: Автоматизация COM для проигрывателя Windows Media работает с VBS, но не с Python
Хотя это не использует модуль playsound, это хорошая альтернатива.
Брат, вы спросили, как остановить воспроизведение звука через модуль playsound в python? Вы воспроизвели mp3-файл, но не можете его остановить.
Такая же проблема возникла и у меня, когда я работал над кодом VS.
Решение: После успешного выполнения программы начнется воспроизведение аудиофайла. Теперь нажмите на терминал, как только вы увидите курсор, нажмите Ctrl + C, он выведет вас из терминала, и звук также перестанет воспроизводиться.
Используемые инструкции по программированию:
from playsound import playsound playsound('//path//to//a//sound//file//you//want//to//play.mp3')