Как я могу воспроизвести звук, в то время как другие строки кода выполняются одновременно? - PullRequest
0 голосов
/ 12 октября 2018

Я хочу, чтобы мой код делал это, но с фоновой музыкой:

import time 
while True:
    print ('ligma')
    time.sleep(1.5)

Я пробовал это:

import time 
import winsound
while True:
    print ('ligma')
    time.sleep(1.5)
    winsound.PlaySound("dank", winsound.SND_ALIAS)

, но повторяет звук затем повторяет слово.Я ожидаю, что он повторит слово и воспроизведет звук одновременно.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Это называется асинхронным звуком, а флаг winsound.SND_ASYNC на PlaySound позволит вам воспроизводить звук, пока код продолжает выполняться:

winsound.PlaySound("dank", winsound.SND_ALIAS|winsound.SND_ASYNC)

Из памяти этодаст вам один звуковой канал, т. е. воспроизведение других звуков отключит все воспроизводимые в данный момент звуки.Если требуется более одновременное воспроизведение, требуется что-то вроде PyGame .

0 голосов
/ 12 октября 2018

Вам необходимо воспроизвести звук в другом потоке, чтобы ваш другой код мог выполняться одновременно.

import time
import winsound
from threading import Thread

def play_sound():
    winsound.PlaySound("dank", winsound.SND_ALIAS)

while True:
    thread = Thread(target=play_sound)
    thread.start()
    print ('ligma')
    time.sleep(1.5)

РЕДАКТИРОВАТЬ: я переместил объявление потока в цикл.Мой первоначальный ответ был создан вне цикла, что вызвало RuntimeError.Узнайте больше здесь: https://docs.python.org/3/library/threading.html#threading.Thread.start

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...