reproducir - Reproducción de canciones mp3 en python
read mp3 python (11)
Quiero reproducir mi canción (mp3) de Python, ¿me pueden dar un comando más simple para hacer eso?
Esto no es correcto:
import wave
w = wave.open("e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3","r")
Como ya no se sugirió aquí, pero es probablemente una de las soluciones más fáciles:
import subprocess
def play_mp3(path):
subprocess.Popen([''mpg123'', ''-q'', path]).wait()
Depende de cualquier reproductor compatible con mpg123, que obtienes por ejemplo para Debian usando:
apt-get install mpg123
o
apt-get install mpg321
En este punto, ¿por qué no mencionar python-audio-tools
?
- GitHub: https://github.com/tuffy/python-audio-tools
- documentos: http://audiotools.sourceforge.net/programming/audiotools.html?highlight=seek#module-audiotools
Es la mejor solución que encontré.
(Necesitaba instalar libasound2-dev
, en Raspbian)
Extracto del código basado libremente en:
https://github.com/tuffy/python-audio-tools/blob/master/trackplay
#!/usr/bin/python
import os
import re
import audiotools.player
START = 0
INDEX = 0
PATH = ''/path/to/your/mp3/folder''
class TracklistPlayer:
def __init__(self,
tr_list,
audio_output=audiotools.player.open_output(''ALSA''),
replay_gain=audiotools.player.RG_NO_REPLAYGAIN,
skip=False):
if skip:
return
self.track_index = INDEX + START - 1
if self.track_index < -1:
print(''--> [track index was negative]'')
self.track_index = self.track_index + len(tr_list)
self.track_list = tr_list
self.player = audiotools.player.Player(
audio_output,
replay_gain,
self.play_track)
self.play_track(True, False)
def play_track(self, forward=True, not_1st_track=True):
try:
if forward:
self.track_index += 1
else:
self.track_index -= 1
current_track = self.track_list[self.track_index]
audio_file = audiotools.open(current_track)
self.player.open(audio_file)
self.player.play()
print(''--> index: '' + str(self.track_index))
print(''--> PLAYING: '' + audio_file.filename)
if not_1st_track:
pass # here I needed to do something :)
if forward:
pass # ... and also here
except IndexError:
print(''/n--> playing finished/n'')
def toggle_play_pause(self):
self.player.toggle_play_pause()
def stop(self):
self.player.stop()
def close(self):
self.player.stop()
self.player.close()
def natural_key(el):
"""See http://www.codinghorror.com/blog/archives/001018.html"""
return [int(s) if s.isdigit() else s for s in re.split(r''(/d+)'', el)]
def natural_cmp(a, b):
return cmp(natural_key(a), natural_key(b))
if __name__ == "__main__":
print(''--> path: '' + PATH)
# remove hidden files (i.e. ".thumb")
raw_list = filter(lambda element: not element.startswith(''.''), os.listdir(PATH))
# mp3 and wav files only list
file_list = filter(lambda element: element.endswith(''.mp3'') | element.endswith(''.wav''), raw_list)
# natural order sorting
file_list.sort(key=natural_key, reverse=False)
track_list = []
for f in file_list:
track_list.append(os.path.join(PATH, f))
TracklistPlayer(track_list)
Estás intentando jugar un .mp3
como si fuera un .wav
.
Podría intentar usar pydub para convertirlo a formato .wav
, y luego alimentarlo en pyAudio.
Ejemplo:
from pydub import AudioSegment
song = AudioSegment.from_mp3("original.mp3")
song.export("final.wav", format="wav")
Alternativamente, use pygame , como se menciona en la otra respuesta.
Obtenga el módulo VLC Python , vlc.py, que brinda soporte completo para libVLC y pop en paquetes de sitio. Entonces:
>>> import vlc
>>> p = vlc.MediaPlayer("file:///path/to/track.mp3")
>>> p.play()
Y puedes detenerlo con:
>>> p.stop()
Ese módulo ofrece mucho más que eso (como casi todo lo que puede hacer el reproductor multimedia VLC), pero ese es el medio más simple y efectivo de reproducir un MP3.
Podrías jugar un poco con os.path para que encuentre la ruta del MP3 para ti, dado el nombre del archivo y posiblemente limitando los directorios de búsqueda.
La documentación completa y los módulos pre-preparados están disponibles here . Las versiones actuales son compatibles con Python 3.
Otra opción rápida y simple ...
import os
os.system(''start path/to/player/executable path/to/file.mp3'')
Ahora es posible que deba hacer algunos pequeños cambios para que funcione. Por ejemplo, si el jugador necesita argumentos adicionales o no necesita especificar la ruta completa. Pero esta es una forma simple de hacerlo.
Prueba esto. Es simplista pero quizás no sea el mejor método.
from pygame import mixer # Load the required library
mixer.init()
mixer.music.load(''e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3'')
mixer.music.play()
Tenga en cuenta que la compatibilidad con MP3
es limitada .
pip install pygame
Si está trabajando en el cuaderno Jupyter (anteriormente IPython), puede
import IPython.display as ipd
ipd.Audio(filename=''path/to/file.mp3'')
Una solución simple:
import webbrowser
webbrowser.open("C:/Users/Public/Music/Sample Music/Kalimba.mp3")
aclamaciones...
Ver también playsound
pip install playsound
import playsound
playsound.playsound(''/path/to/filename.mp3'', True)
from win32com.client import Dispatch
wmp=Dispatch(''WMPlayer.OCX'')
liste=[r"F:/Mp3/rep/6.Evinden Uzakta.mp3",
r"F:/Mp3/rep/07___SAGOPA_KAJMER___BIR__I.MP3",
r"F:/Mp3/rep/7.Terzi.mp3",
r"F:/Mp3/rep/08. Rüya.mp3",
r"F:/Mp3/rep/8.Battle Edebiyatı.mp3",
r"F:/Mp3/rep/09_AUDIOTRACK_09.MP3",
r"F:/Mp3/rep/02. Sagopa Kajmer - Uzun Yollara Devam.mp3",
r"F:/Mp3/rep/2Pac_-_CHANGE.mp3",
r"F:/Mp3/rep/03. Herkes.mp3",
r"F:/Mp3/rep/06. Sagopa Kajmer - Istakoz.mp3"
for x in liste:
mp3=wmp.newMedia(x)
wmp.currentPlaylist.appendItem(mp3)
wmp.controls.play()
import os
os.system(''file_path/filename.mp3'')