web-dev-qa-db-fra.com

Jouer un morceau mp3 sur python

Je veux jouer ma chanson (mp3) à partir de python, pouvez-vous me donner la commande la plus simple pour le faire?

Ce n'est pas correct:

import wave
w = wave.open("e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3","r")
42
The Mr. Totardo

Essaye ça. C'est simpliste mais peut-être pas la meilleure méthode.

from pygame import mixer # Load the required library

mixer.init()
mixer.music.load('e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3')
mixer.music.play()

Veuillez noter que le support de pour MP3 est limité .

L'installation est simple -

pip install pygame
42
shad0w_wa1k3r

Prenez le module VLC Python , vlc.py, qui fournit un support complet pour libVLC et insérez-le dans les packages de site. Ensuite:

>>> import vlc
>>> p = vlc.MediaPlayer("file:///path/to/track.mp3")
>>> p.play()

Et vous pouvez l'arrêter avec:

>>> p.stop()

Ce module offre bien plus que cela (comme pratiquement tout ce que le lecteur multimédia VLC peut faire), mais c'est le moyen le plus simple et le plus efficace de jouer un MP3.

Vous pouvez jouer un peu avec os.path pour le trouver et trouver le chemin du fichier MP3, compte tenu du nom du fichier et limitant éventuellement les répertoires de recherche.

Une documentation complète et des modules pré-préparés sont disponibles ici . Les versions actuelles sont compatibles Python 3.

74
Ben

Comme ce n’était pas déjà suggéré ici, c’est probablement l’une des solutions les plus simples:

import subprocess

def play_mp3(path):
    subprocess.Popen(['mpg123', '-q', path]).wait()

Cela dépend de tout lecteur compatible mpg123, que vous obtenez par exemple. pour Debian en utilisant:

apt-get install mpg123

ou 

apt-get install mpg321
11
Michael

Voir aussi playsound

pip install playsound

import playsound
playsound.playsound('/path/to/filename.mp3', True)
10
Shuge Lee

Vous essayez de jouer un .mp3 comme s'il s'agissait d'un .wav.

Vous pouvez essayer d'utiliser pydub pour le convertir au format .wav, puis le transférer dans pyAudio.

Exemple:

from pydub import AudioSegment

song = AudioSegment.from_mp3("original.mp3")
song.export("final.wav", format="wav")

Vous pouvez également utiliser pygame , comme indiqué dans l'autre réponse.

10
David

Une solution simple:

import webbrowser
webbrowser.open("C:\Users\Public\Music\Sample Music\Kalimba.mp3")

à votre santé...

5
toufikovich

Si vous travaillez dans le bloc-notes Jupyter (anciennement IPython), vous pouvez

import IPython.display as ipd
ipd.Audio(filename='path/to/file.mp3')
5
mdeff

À ce stade, pourquoi ne pas mentionner python-audio-tools:

C'est la meilleure solution que j'ai trouvée.

(J'avais besoin d'installer libasound2-dev sur Raspbian)

Extrait de code librement basé sur:
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 __== "__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)
4
dentex

Une autre option simple et rapide ...

import os

os.system('start path/to/player/executable path/to/file.mp3')

Maintenant, vous devrez peut-être apporter de légers changements pour que cela fonctionne. Par exemple, si le joueur a besoin d'arguments supplémentaires ou s'il n'est pas nécessaire de spécifier le chemin complet. Mais c'est une façon simple de le faire.

4
The Unnamed Engineer
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()
2
hsyn

J'ai essayé la plupart des options énumérées ici et trouvé ce qui suit:

pour Windows 10: semblable à la réponse @ Shuge Lee;

from playsound import playsound
playsound('/path/file.mp3')

vous devez courir: 

$ pip install playsound

pour Mac: essayez simplement ce qui suit, qui exécute la commande os,

import os
os.system("afplay file.mp3") 
1
Wael Almadhoun

Code est

import os

os.system("mpg321 song1.mp3")

mpg321 est un lecteur audio en ligne de commande gratuit qui utilise une bibliothèque de décodage audio.

0
Sheeba Joseph

J'ai eu ce problème et je n'ai trouvé aucune solution qui me plaisait. J'ai donc créé un wrapper python pour mpg321: mpyg321 .

Vous aurez besoin d'avoir mpg321 installé sur votre ordinateur, puis faites pip install mpyg321.

L'utilisation est assez simple:

from mpyg321.mpyg321 import MPyg321Player
from time import sleep

player = MPyg321Player()       # instanciate the player
player.play_song("sample.mp3") # play a song
sleep(5)
player.pause()                 # pause playing
sleep(3)
player.resume()                # resume playing
sleep(5)
player.stop()                  # stop playing
player.quit()                  # quit the player

Vous pouvez également définir des rappels pour plusieurs événements (musique mise en pause par l'utilisateur, fin de la chanson, etc.).

0
Emmanuel O