python - Sådan spiller du en lyd ved hjælp af pygame i alle operativsystemer?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har skrevet et python script til at spille lyd.


#!/usr/bin/python

import pygame
import time
def playNotificationSount():
    pygame.init()
    pygame.mixer.music.load("notification.mp3")
    pygame.mixer.music.play()
    time.sleep(10)
playNotificationSount()


Det kan lyde fint i ubuntu, men der afspilles ingen lyd i Windows. Det giver ingen fejlmeddelelse.
Hvordan kan jeg forbedre scriptet, så det kan afspille lyd i alle operativsystemer?

Bedste reference


Hvis du vil spille en lyd (eller musik) uden at åbne et pygame vindue, skal du ringe pygame.mixer.init(), før du ringer pygame.init() (eller ring kun pygame.mixer.init()). Grunden til at du skal gøre dette er ikke klart for mig, men det virker. Her er et minimalt eksempel: [11]


import pygame


pygame.mixer.init()  # Initialize the mixer module.
sound1 = pygame.mixer.Sound('notification.mp3')  # Load a sound.

while True:
    inpt = input('Press enter to play the sound: ')
    sound1.play()  # Play the sound.
    print('Playing sound')


I et normalt spil skal du ringe pygame.display.set\_mode() for at åbne et pygame vindue, før musikken eller lyden kan afspilles, og du behøver ikke at ringe pygame.mixer.init() separat. Også ringe pygame.mixer.pre\_init(44100, -16, 2, 2048) før pygame.init() kan hjælpe, hvis der er noget galt med lyden.


import pygame


pygame.mixer.pre\_init(44100, -16, 2, 2048)
pygame.init()
screen = pygame.display.set\_mode((640, 480))

def playNotificationSound():
    pygame.mixer.music.load('notification.mp3')
    pygame.mixer.music.play()

playNotificationSound()