Reproducir un archivo mp3 usando python
Tengo este código llamado Programa CountDown. Lo que hace mi programa es:
Cuenta regresiva desde 60.
Reproduzca un archivo de sonido (
alarm.wav) cuando la cuenta atrás llegue a cero. Esto significa que el código debe hacer lo siguiente:Haga una pausa de un segundo entre la visualización de cada número en la cuenta regresiva llamando
time.sleep().Llame
subprocess.Popen()para abrir el archivo de sonido con la aplicación predeterminada.
Aquí está el código para ello:
import time , subprocess,os
from subprocess import call
def countDown():
for i in range (10):
print(i, end='')
time.sleep(1)
countDown()
subprocess.call([ 'bomb.mp3'])
Cuando ejecuto esto, obtengo:
Error: File not Found
Lo intenté con:
subprocess.call([ 'home/username/bomb.mp3']) # location specified
Pero tengo:
Error: Permission denied
Luego, probé con Popen:
subprocess.Popen(['start', 'bomb.mp3'], shell=True)
Pero tengo:
Error: 0123456789bomb.mp3: 1: start: not found
No estoy muy seguro de por qué este código no funciona en Ubuntu, porque funciona bien en Windows.
¿Qué puedo hacer por esto? ¿Existe algún método para abrir archivos mp3 usando Python en Ubuntu 20.04 LTS o me estoy perdiendo algún argumento?
Gracias por adelantado.
Respuestas
Utilizar:
subprocess.call(['xdg-open', '/home/username/bomb.mp3'])
bomb.mp3(o alarm.wav) no es un programa o script que desea ejecutar, sino un archivo que desea abrir. Como su objetivo parece ser abrirlo en cualquier aplicación gráfica que esté registrada actualmente para manejarlo, que es lo que hizo al menos una de las versiones anteriores de su script cuando se ejecutó en Windows, debe usar el xdg-opencomando.
Además de usar xdg-open, también agregué un encabezado /al principio de la ruta, sin el cual se resuelve en relación con el directorio actual (que presumiblemente fallaría excepto cuando el directorio actual es /).
La primera versión de su programa, o algo similar, puede haber funcionado en Windows porque, en Windows, los archivos no ejecutables se pueden ejecutar como comandos. Esto hace que se abran con cualquier programa con el que esté asociado su tipo de archivo. La mayoría de los sistemas operativos y la mayoría de los shells no se comportan de esta manera. Windows también proporciona un comando para hacer esto (con semántica ligeramente diferente) llamado start. Pero otros sistemas operativos, como Ubuntu, no lo tienen start. Entonces, cuando lo intentaste en Ubuntu, tampoco funcionó.
Lo que tiene Ubuntu es xdg-open. Ubuntu no está solo aquí; xdg-openno funciona en Windows o macOS, pero sí funciona en sistemas con entornos de escritorio gráficos que siguen los estándares de freedesktop.org . Esto incluye casi cualquier sistema GNU / Linux (y algunos otros sistemas operativos similares a Unix) si el usuario tiene un entorno de escritorio gráfico instalado .
Para que el xdg-opencomando tenga éxito , el usuario debe iniciar sesión en una sesión gráfica.
(En macOS, lo usaría open).