¿Cómo puedo reproducir un mp3 con pygame?

5 minutos de lectura

¿Como puedo reproducir un mp3 con pygame
Un tiro

import pygame
file="some.mp3"
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()

Esto genera, “El proceso finalizó con el código de salida 0”, pero no reproduce nada. ¿Como puedo resolver este problema?

  • probaste pygame.mixer.music.play(loops=-1) ???

    – rocksportrocker

    12/10/2011 a las 21:45

  • sí, trato de cambiar los bucles, configurar el volumen, cambiar los canales. Programa funcionando pero sin sonido

    – Un tiro

    13 de octubre de 2011 a las 5:00


  • while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(10) algo como esto resuelve mi problema. No sé por qué, pero la música está ocupada.

    – Un tiro

    13 de octubre de 2011 a las 10:57


  • Desde pygame.org/docs/ref/music.html “Tenga en cuenta que la compatibilidad con MP3 es limitada. […] Considere usar OGG en su lugar”.

    – 龚元程

    14 de octubre de 2011 a las 14:18

  • sí, pero sucedió cuando intento hacer que la reproducción suene pygame.mixer.Sound(filename) Sound.play

    – Un tiro

    14/10/2011 a las 19:02

La función de reproducción inicia la reproducción de música, pero regresa inmediatamente. Luego, su programa llega al final y el objeto pygame se destruye automáticamente, lo que hace que la música se detenga.

Como comentaste, reproduce la música si la esperas antes de salir, porque entonces el objeto pygame no se destruye hasta que finaliza el ciclo while.

while pygame.mixer.music.get_busy(): 
    pygame.time.Clock().tick(10)

1646968267 759 ¿Como puedo reproducir un mp3 con pygame
Ceniza

La música se detiene porque es un evento asíncrono, lo que significa que seguirá con el guión. luego, el guión se detiene instantáneamente, sin darle a la música la oportunidad de comenzar. como se dijo antes, podrías usar

while pygame.mixer.music.get_busy(): 
  pygame.time.Clock().tick(10)

sin embargo, aún mejor es pygame.event.wait()ya que esperará a que finalicen todos los eventos asincrónicos.

Aquí hay una manera súper fácil.

import pygame
file="some.mp3"
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
pygame.event.wait()

1646968267 177 ¿Como puedo reproducir un mp3 con pygame
Menú

He encontrado una buena solución de thepythongamebook.com:

pygame.mixer.pre_init(44100, -16, 2, 2048) # setup mixer to avoid sound lag

pygame.init()

pygame.mixer.init()

pygame.mixer.music.load('music_01.mp3')

pygame.mixer.music.play(-1)

prueba este

import pygame

def pmusic(file):
    pygame.init()
    pygame.mixer.init()
    clock = pygame.time.Clock()
    pygame.mixer.music.load(file)
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        print("Playing...")
        clock.tick(1000)

def stopmusic():
    pygame.mixer.music.stop()


def getmixerargs():
    pygame.mixer.init()
    freq, size, chan = pygame.mixer.get_init()
    return freq, size, chan


def initMixer():
    BUFFER = 3072  # audio buffer size, number of samples since pygame 1.8.
    FREQ, SIZE, CHAN = getmixerargs()
    pygame.mixer.init(FREQ, SIZE, CHAN, BUFFER)

try:
    initMixer()
    file="C:\\data\\03.mp3"
    pmusic(file)
except KeyboardInterrupt:  # to stop playing, press "ctrl-c"
    stopmusic()
    print("\nPlay Stopped by user")
except Exception:
    print("unknown error")

print("Done")

  • Bienvenido a StackOverflow. Las respuestas que solo contienen código tienden a marcarse para su eliminación, ya que son de “baja calidad”. Lea la sección de ayuda sobre cómo responder preguntas y luego considere agregar algún comentario a su respuesta.

    –Graham

    6 de marzo de 2018 a las 6:00

  • Estaba teniendo problemas para detener la música con cntl-c. KeyboardInterrupt era lo que necesitaba.

    – Mauro Zalloco

    29 de enero a las 18:26


1646968268 431 ¿Como puedo reproducir un mp3 con pygame
Rabbid76

PyGame tiene 2 módulos diferentes para reproducir sonido y música, el pygame.mixer módulo y el pygame.mixer.music módulo. Este módulo contiene clases para cargar objetos de sonido y controlar la reproducción. La diferencia se explica en la documentación:

La diferencia entre la reproducción de música y la reproducción de sonido normal es que la música se transmite y nunca se carga toda a la vez. El sistema mezclador solo admite una sola transmisión de música a la vez.

Si quieres jugar un mp3 archivo, necesita inicializar el módulo. Cargue el archivo con pygame.mixer.music.load. Invocar pygame.mixer.music.play() para iniciar la reproducción de la transmisión de música. Finalmente, debe esperar a que se reproduzca el archivo.
Utilizar pygame.mixer.music.get_busy() para comprobar si se está mezclando un sonido. Consulta el estado del mezclador continuamente en un bucle.
En el bucle, debe retrasar el tiempo ya sea pygame.time.delay o pygame.time.Clock.tick. Además, debe manejar los eventos en el bucle de la aplicación. Ver pygame.event.get() respectivamente pygame.event.pump():

Para cada cuadro de su juego, deberá realizar algún tipo de llamada a la cola de eventos. Esto asegura que su programa pueda interactuar internamente con el resto del sistema operativo.

import pygame
pygame.init()

pygame.mixer.music.load('my_music.mp3')
pygame.mixer.music.play()

clock = pygame.time.Clock()
while pygame.mixer.music.get_busy():
    clock.tick(60)
    pygame.event.poll()

  • Bienvenido a StackOverflow. Las respuestas que solo contienen código tienden a marcarse para su eliminación, ya que son de “baja calidad”. Lea la sección de ayuda sobre cómo responder preguntas y luego considere agregar algún comentario a su respuesta.

    –Graham

    6 de marzo de 2018 a las 6:00

  • Estaba teniendo problemas para detener la música con cntl-c. KeyboardInterrupt era lo que necesitaba.

    – Mauro Zalloco

    29 de enero a las 18:26


1646968269 759 ¿Como puedo reproducir un mp3 con pygame
Xantium

Parece que el audio no se reproduce debido a la forma en que lo importó. El siguiente código reproduce el sonido como se esperaba. Nada ha cambiado aquí excepto que en lugar de import pygame usa from pygame import mixer. Esto puede deberse al hecho de que Pygame es un paquete, pero no estoy seguro.

from pygame import mixer

file="some.mp3"
mixer.init()
mixer.music.load(file)
mixer.music.play()

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad