остановка звука с помощью модуля playsound

как мне остановить воспроизведение звука через модуль playaudio в коде Python? как я могу это остановить

playsound.playsound("имя_файла")


person Kashish Jain    schedule 23.07.2019    source источник
comment
Вам нужно будет показать нам еще немного кода. Это очень мало для работы.   -  person harmonica141    schedule 23.07.2019
comment
например, у меня есть один файл с именем drink_water.mp3, тогда я хочу остановить музыку, когда я ввожу остановку, тогда я не могу остановить музыку. я ввожу код playsound.playsound(drinking_water.mp3) но я хочу остановить музыку в середине, тогда каким должен быть код для остановки воспроизведения музыки   -  person Kashish Jain    schedule 23.07.2019


Ответы (6)


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()
person Community    schedule 05.08.2019

Вы можете использовать модуль 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()
person Aakash Singh    schedule 12.04.2020

В Windows попробуйте: import winsound

winsound.PlaySound(r'C:\sound.wav', winsound.SND_ASYNC)

Остановить воспроизведение:

winsound.PlaySound(None, winsound.SND_PURGE)
person Ben Rauzi    schedule 05.08.2019

Вот более простой способ:

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, это хорошая альтернатива.

person A person    schedule 17.03.2021

Брат, вы спросили, как остановить воспроизведение звука через модуль playsound в python? Вы воспроизвели mp3-файл, но не можете его остановить.

Такая же проблема возникла и у меня, когда я работал над кодом VS.

Решение: После успешного выполнения программы начнется воспроизведение аудиофайла. Теперь нажмите на терминал, как только вы увидите курсор, нажмите Ctrl + C, он выведет вас из терминала, и звук также перестанет воспроизводиться.

Используемые инструкции по программированию:

from playsound import playsound playsound('//path//to//a//sound//file//you//want//to//play.mp3')

person Nadeem Afzal    schedule 15.06.2021
comment
Это остановит всю программу, что может быть, а может и не быть тем, чего хочет ОП. Принятый ответ кажется лучшим решением. - person Robert; 15.06.2021

person    schedule
comment
Кодовые ответы не приветствуются. Пожалуйста, кратко опишите, как ваш ответ решает проблему и почему он может быть предпочтительнее других предоставленных ответов. - person DaveL17; 21.04.2021