it-swarm.com.de

MP3-Song auf Python spielen

Ich möchte mein Lied (mp3) von Python abspielen. Können Sie mir dazu einen einfachsten Befehl geben?

Das ist nicht richtig:

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

Versuche dies. Es ist einfach, aber vielleicht nicht die beste Methode.

from pygame import mixer # Load the required library

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

Bitte beachten Sie, dass die Unterstützung für MP3 begrenzt ist .

Die Installation ist einfach -

pip install pygame
42
shad0w_wa1k3r

Holen Sie sich das VLC-Python-Modul , vlc.py, das vollständige Unterstützung für libVLC bietet, und legen Sie diese in Site-Packages fest. Dann:

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

Und Sie können es stoppen mit:

>>> p.stop()

Dieses Modul bietet noch viel mehr (wie fast alles, was der VLC Media Player tun kann), aber das ist das einfachste und effektivste Mittel, um eine MP3 zu spielen.

Sie könnten ein bisschen mit os.path spielen, um den Pfad zur MP3-Datei für Sie zu finden, den Dateinamen angeben und möglicherweise die Suchverzeichnisse einschränken.

Eine vollständige Dokumentation und vorbereitete Module sind verfügbar hier . Aktuelle Versionen sind Python 3-kompatibel.

74
Ben

Wie es hier nicht schon vorgeschlagen wurde, ist es aber wahrscheinlich eine der einfachsten Lösungen:

import subprocess

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

Dies hängt von jedem mpg123-kompatiblen Player ab, den Sie z. für Debian mit:

apt-get install mpg123

oder 

apt-get install mpg321
11
Michael

Siehe auch playsound

pip install playsound

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

Sie versuchen, einen .mp3 so abzuspielen, als wäre es ein .wav.

Sie könnten versuchen, es mit pydub in das .wav-Format zu konvertieren und dieses dann in pyAudio einzugeben.

Beispiel:

from pydub import AudioSegment

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

Verwenden Sie alternativ pygame , wie in der anderen Antwort erwähnt.

10
David

Eine einfache Lösung:

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

prost...

5
toufikovich

Wenn Sie mit dem Jupyter-Notebook (ehemals IPython) arbeiten, können Sie dies tun

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

Erwähnen Sie an dieser Stelle nicht python-audio-tools:

Es ist die beste Lösung, die ich gefunden habe.

(Ich musste libasound2-dev auf Raspbian installieren)

Code-Auszug lose basierend auf:
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

Eine weitere schnelle und einfache Möglichkeit ...

import os

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

Möglicherweise müssen Sie einige geringfügige Änderungen vornehmen, damit es funktioniert. Zum Beispiel, wenn der Player zusätzliche Argumente benötigt oder Sie nicht den vollständigen Pfad angeben müssen. Dies ist jedoch eine einfache Möglichkeit, dies zu tun.

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

Ich habe die meisten der hier aufgeführten Optionen ausprobiert und Folgendes gefunden:

für Windows 10: ähnlich wie bei @Shuge Lee Antwort;

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

du musst laufen: 

$ pip install playsound

für Mac: Probieren Sie einfach Folgendes aus: Der Befehl os wird ausgeführt.

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

Code ist

import os

os.system("mpg321 song1.mp3")

mpg321 ist ein kostenloser Kommandozeilen-Audioplayer, der eine Audiodekodierungsbibliothek verwendet.

0
Sheeba Joseph

Ich hatte dieses Problem und fand keine Lösung, die mir gefiel, also erstellte ich einen Wrapper für python für mpg321: mpyg321 .

Sie müssten mpg321 auf Ihrem Computer installiert haben und dann pip install mpyg321 ausführen.

Die Verwendung ist ziemlich einfach:

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

Sie können auch Rückrufe für mehrere Ereignisse definieren (Musik vom Benutzer angehalten, Liedende ...).

0
Emmanuel O