Pygame не может воспроизвести mp3 после захвата скриншота - PullRequest
1 голос
/ 28 марта 2020

У меня есть код для PyGame для воспроизведения mp3. но я не могу воспроизвести mp3 после получения снимка экрана

file_A.py

from pygame import mixer
mixer.init()
def play(PATH, target):

    # play the sound
    print("play", target + ".mp3")
    mixer.music.load(PATH + target + ".mp3")
    mixer.music.play()

play("x","y")                   // its work if i call here

file_B.py

from .file_A import play
import pyscreenshot as ImageGrab

def main():

    play("x1","y")                           // its working here, but
    left = ImageGrab.grab(bbox=(1,2,3,4))    // after grab
    play("x2","y")                           // log printed that method called but sound not working

python 3.7.4 pygame 1.9.6 pyscreenshot 1.0.0

Ответы [ 2 ]

1 голос
/ 28 марта 2020

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

Я также немного сбит с толку, что ваш путь называется "xy.mp3". Вы можете попробовать указать абсолютный путь, например,

Измените определение вашей функции на следующее и попробуйте вызвать его с file_B.py

def play():

    # play the sound
    print("play", target + ".mp3")
    mixer.music.load("c:/programs/mygame/music/8bit-jingle-twist.mp3")
    mixer.music.play()

Также рассмотрите возможность добавления этой строки pygame.mixer.music.stop() в функция воспроизведения, позволяющая убедиться, что используемый канал musi c правильно терминирован до получения следующего экземпляра воспроизведения.

0 голосов
/ 29 марта 2020

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

file_B.py

from .file_A import play
import pyscreenshot as ImageGrab
import time

def main():

    play("x1","y")                           // its working here, but
    left = ImageGrab.grab(bbox=(1,2,3,4))    // after grab
    play("x2","y")                           // log printed that method called but sound not working
    time.sleep(n)                            // wait the audio play

или

, добавьте это в file_a .py after mixer.play

while mixer.music.get_busy(): 
        time.Clock().tick(10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...