Зациклить звук

Meisam

Новичок
Пользователь
Янв 10, 2021
10
0
1
Python:
winsound.PlaySound("C:/Windows/Media/Ring08.wav", winsound.SND_LOOP)
Должен воспроизводиться в бесконечном цикле. Отыгрывает только один раз. Что не так в коде?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Должен воспроизводиться в бесконечном цикле.
Вот пример:
Python:
from winsound import PlaySound, SND_FILENAME, SND_ASYNC, SND_LOOP


# будет воспроизводить звук в цикле пока программа не завершится
PlaySound("alarm.wav", SND_FILENAME | SND_LOOP | SND_ASYNC)

input()  # чтобы программа не завершалась до ввода
 
  • Мне нравится
Реакции: Student

Meisam

Новичок
Пользователь
Янв 10, 2021
10
0
1
Отыгрывает и в этом случае однократно, молча ждёт ввода и завершает работу по нажатию. Приходится использовать цикл while. Непонятно, почему snd_loop не срабатывает. Нет ли у кого соображений? Спасибо
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Отыгрывает и в этом случае однократно
У меня код работает корректно. Попробуйте положить wav-файл в папку со скриптом. У вас скорее всего однократно воспроизводит дефолтный звук (так как скрипт не может найти wav-файл по указанному пути).
Можно попробовать добавить флаг SND_NODEFAULT чтобы дефолтный звук не проигрывался.
 

Meisam

Новичок
Пользователь
Янв 10, 2021
10
0
1
Положил копию в папку скрипта, код подправил так:
Python:
from winsound import PlaySound, SND_FILENAME, SND_ASYNC, SND_LOOP
PlaySound('Ring08.wav', SND_LOOP)
input()
Звук был и остался не дефолтным, но однократный, в обоих случаях.
В моей программе звук далеко не самое главное, но в принципе хочется разобраться, в чём дело. Хорошо, что не заработало сначала у меня. А если такое вылезло бы у заказчика на лицензионной винде? Имел бы я бледный вид.
Может, какие-то настройки в системе надо править, нет соображений?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
С таким кодом у меня тоже проигрывает звук один раз.
Python:
from winsound import PlaySound, SND_FILENAME, SND_ASYNC, SND_LOOP
PlaySound('Ring08.wav', SND_LOOP)
input()
а если добавить флаги как в примере выше, то проигрывает до завершения программы.
Python:
from winsound import PlaySound, SND_FILENAME, SND_ASYNC, SND_LOOP


PlaySound("Ring08.wav", SND_FILENAME | SND_LOOP | SND_ASYNC)
input()
Может, какие-то настройки в системе надо править
Кроме флагов в коде других настроек не требуется.
 

Meisam

Новичок
Пользователь
Янв 10, 2021
10
0
1
Да, так работает. Спасибо, решено.
 

Форум IT Специалистов