MP3-nummer afspelen op python

Ik wil mijn nummer (mp3) van python afspelen, kun je me een eenvoudig commando geven om dat te doen?

Dit is niet correct:

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

Antwoord 1, autoriteit 100%

Probeer dit eens. Het is simplistisch, maar waarschijnlijk niet de beste methode.

from pygame import mixer  # Load the popular external library
mixer.init()
mixer.music.load('e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3')
mixer.music.play()

Houd er rekening mee dat de ondersteuning van pygame voor MP3 beperkt is. Zoals opgemerkt door Samy Bencherif, zal er ook geen elke gekke pop-up van het pygame-venster wanneer u de bovenstaande code uitvoert.

Installatie is eenvoudig

pip install pygame

Antwoord 2, autoriteit 99%

Pak de VLC Python-module, vlc.py, die volledige ondersteuning biedt voor libVLC en stop die in sitepakketten. Dan:

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

En je kunt het stoppen met:

>>> p.stop()

Die module biedt veel meer dan dat (zoals vrijwel alles wat de VLC-mediaspeler kan doen), maar dat is de eenvoudigste en meest effectieve manier om één MP3 af te spelen.

Je zou een beetje met os.path kunnen spelen om het het pad naar de MP3 voor je te laten vinden, gezien de bestandsnaam en mogelijk de zoekmappen beperkend.

Volledige documentatie en vooraf voorbereide modules zijn hier beschikbaar. De huidige versies zijn compatibel met Python 3.


Antwoord 3, autoriteit 42%

Zie ook playsound

pip install playsound
import playsound
playsound.playsound('/path/to/filename.mp3', True)

Antwoord 4, autoriteit 24%

Ik heb de meeste van de hier vermelde opties geprobeerd en heb het volgende gevonden:

voor Windows 10:
vergelijkbaar met het antwoord van @Shuge Lee;

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

je moet uitvoeren:

$ pip install playsound

voor Mac:
probeer gewoon het volgende, dat het os-commando uitvoert,

import os
os.system("afplay file.mp3") 

Antwoord 5, autoriteit 23%

Zoals het hier nog niet is gesuggereerd, maar waarschijnlijk een van de gemakkelijkste oplossingen is:

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

Het hangt af van elke mpg123-compatibele speler, die je b.v. voor Debian met:

apt-get install mpg123

of

apt-get install mpg321

Antwoord 6, autoriteit 18%

Je probeert een .mp3 af te spelen alsof het een .wav is.

Je zou kunnen proberen pydub te gebruiken om het naar de .wav-indeling te converteren en dat vervolgens in pyAudio in te voeren.

Voorbeeld:

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

U kunt ook pygame gebruiken, zoals vermeld in het andere antwoord.


Antwoord 7, autoriteit 13%

Als u in de Jupyter (voorheen IPython) notebook werkt, kunt u

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

Antwoord 8, autoriteit 10%

Een eenvoudige oplossing:

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

proost…


Antwoord 9, autoriteit 9%

Nog een snelle en eenvoudige optie…

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

Nu moet je misschien een paar kleine wijzigingen aanbrengen om het te laten werken. Als de speler bijvoorbeeld extra argumenten nodig heeft of als u niet het volledige pad hoeft op te geven. Maar dit is een eenvoudige manier om het te doen.


Antwoord 10, autoriteit 6%

Waarom zou u op dit moment python-audio-tools niet vermelden:

Het is de beste oplossing die ik heb gevonden.

(Ik moest libasound2-dev installeren op Raspbian)

Codefragment losjes gebaseerd op:
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)

Antwoord 11, autoriteit 6%

Ik had dit probleem en vond geen oplossing die ik leuk vond, dus heb ik een python-wrapper gemaakt voor mpg321: mpyg321 .

U moet mpg321 op uw computer hebben geïnstalleerd en vervolgens pip install mpyg321 doen.

Het gebruik is vrij eenvoudig:

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

Je kunt ook terugbellen instellen voor verschillende evenementen (muziek gepauzeerd door gebruiker, einde van nummer…).


Antwoord 12, autoriteit 4%

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. Ruya.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()

Antwoord 13, autoriteit 4%

Voor iedereen die dit in 2020 nog steeds vindt: na langer zoeken dan ik had verwacht, vond ik zojuist de eenvoudige audiobibliotheek, die goed onderhouden lijkt, een MIT-licentie heeft, werkt op Linux, macOS en Windows, en slechts zeer weinig afhankelijkheden heeft (alleen python3-dev en libasound2-dev op Linux).

Het ondersteunt het rechtstreeks afspelen van gegevens uit buffers (bijv. Numpy-arrays) in het geheugen, heeft een handige audiotestfunctie:

import simpleaudio.functionchecks as fc
fc.LeftRightCheck.run()

en u kunt als volgt een bestand van schijf afspelen:

import simpleaudio as sa
wave_obj = sa.WaveObject.from_wave_file("path/to/file.wav")
play_obj = wave_obj.play()
play_obj.wait_done()

Installatie-instructies zijn in feite pip install simpleaudio.


Antwoord 14, autoriteit 3%

Tot nu toe werkte pydub het beste voor mij. Modules zoals playsound zullen ook het werk doen, maar het heeft slechts één enkele functie. pydub heeft veel functies, zoals het in stukjes snijden van het nummer (bestand), het aanpassen van het volume enz…

Het is net zo eenvoudig als het snijden van de lijsten in python.

Dus, als het gaat om gewoon spelen, is het zoals hieronder weergegeven.

from pydub import AudioSegment
from pydub.playback import play
path_to_file = r"Music/Harry Potter Theme Song.mp3"
song = AudioSegment.from_mp3(path_to_file)
play(song)

Antwoord 15, autoriteit 3%

Je zou pygame als volgt moeten gebruiken:

from pygame import mixer
mixer.init()
mixer.music.load("path/to/music/file.mp3") # Music file can only be MP3
mixer.music.play()
# Then start a infinite loop
while True:
    print("")

Antwoord 16

import os
os.system('file_path/filename.mp3')

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes