es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reproduce varios archivos mp3 en múltiples dispositivos de salida en Raspberry Pi 4.

Necesito que se reproduzcan continuamente de 4 a 8 canales de música estéreo mp3 que se encuentren en carpetas específicas en una tarjeta SD.

Funcionamiento:

  • Jack de audio de 3,5 a bordo
  • Tarjeta de sonido USB que reproduce la música correctamente

Problema:

Pero tan pronto como intento usar el tercer puerto de salida de audio con una tarjeta de sonido USB en el Raspberry Pi, la otra tarjeta deja de funcionar.

Sólo es posible obtener más de 2 salidas de audio trabajando ☹

2 salidas de audio usan alrededor de un 6 % de la potencia de CPU. Y este es el único propósito de estas frambuesas.
Así que por supuesto sería agradable y más eficiente obtener más salidas de un solo raspberry.

Intenté con vlc y mplayer y pude acceder a las diferentes tarjetas de sonido USB sin ningún problema. Pero sólo reproduce música desde una tarjeta de sonido, sin importar lo que intente.

Hardware:

  • Raspberry Pi 4 b 2 GB
  • Se probaron 6 tarjetas de sonido USB diferentes con una salida de jack de audio de 3,5

Otro proyecto:

Encontré este proyecto que hizo lo mismo con archivos WAV. Pero en mi caso no puedo convertir todos los archivos a WAV ya que necesitan seguir siendo archivos mp3. https://www.esologic.com/multi-audio/

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución Propuesta:

    Para superar este problema, sugiero usar una biblioteca de Python llamada ‘Pygame’. Pygame es un conjunto de módulos de Python diseñados para escribir videojuegos, aplicaciones multimedia y programas de audio. Incluye bibliotecas de gráficos y sonido diseñadas para ser usadas con el lenguaje de programación Python.

    Usando Pygame, podemos abrir múltiples instancias del mezclador y reproducir varios archivos de audio simultáneamente. Aquí hay un fragmento de código que muestra cómo podemos lograr esto:

    import pygame
    
    # Inicializa el mezclador
    pygame.mixer.init()
    
    # Carga múltiples archivos de música desde carpetas específicas en la tarjeta SD
    music_files = ['folder1/song1.mp3', 'folder2/song2.mp3']
    
    # Crea una lista de canales de mezclador disponibles
    available_channels = pygame.mixer.get_num_channels()
    
    for i in range(len(music_files)):
        # Verifica si tenemos suficientes canales de mezclador disponibles
        if i < available_channels:
            # Carga el archivo de música en el canal de mezclador
            pygame.mixer.Channel(i).load(music_files[i])
            # Reproduce el archivo de música en el canal de mezclador
            pygame.mixer.Channel(i).play()
    

    En este código, primero inicializamos el mezclador de Pygame. Luego, cargamos múltiples archivos de música desde carpetas específicas en la tarjeta SD. Creamos una lista de canales de mezclador disponibles y luego recorremos los archivos de música. Verificamos si tenemos suficientes canales de mezclador disponibles; si es así, cargamos el archivo de música en el canal de mezclador y lo reproducimos.

    Usando este enfoque, podemos reproducir múltiples canales de audio estéreo simultáneamente con un bajo uso de CPU.

Comments are closed.