Воспроизведение mp3 песни на python

Я хочу воспроизвести свою песню (mp3) с python, можете ли вы дать мне простейшую команду для этого?

Это неверно:

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

Ответ 1

Попробуй это. Это упрощенный, но, возможно, не лучший метод.

from pygame import mixer # Load the required library

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

Обратите внимание, что поддержка MP3 ограничена.

Установка проста -

pip install pygame

Ответ 2

Возьмите модуль VLC Python, vlc.py, который обеспечивает полную поддержку libVLC и поп, что в пакетах сайта. Тогда:

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

И вы можете остановить его с помощью:

>>> p.stop()

Этот модуль предлагает много возможностей (например, что-то, что может сделать медиаплеер VLC), но это самое простое и эффективное средство для воспроизведения одного MP3.

Вы можете немного поиграть с os.path, чтобы найти путь к MP3 для вас, учитывая имя файла и, возможно, ограничивая каталоги поиска.

Полная документация и готовые модули доступны здесь. Текущие версии совместимы с Python 3.

Ответ 3

См. также playsound

pip install playsound

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

Ответ 4

Вы пытаетесь воспроизвести .mp3, как если бы это был .wav.

Вы можете попробовать использовать pydub, чтобы преобразовать его в формат .wav, а затем передать это в pyAudio.

Пример:

from pydub import AudioSegment

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

В качестве альтернативы используйте pygame, как указано в другом ответе.

Ответ 5

Как это уже не было предложено здесь, но, вероятно, это одно из самых простых решений:

import subprocess

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

Это зависит от любого совместимого с mpg123 проигрывателя, который вы получаете, например. для Debian:

apt-get install mpg123

или

apt-get install mpg321

Ответ 6

Простое решение:

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

веселит...

Ответ 7

Если вы работаете в ноутбуке Jupyter (ранее IPython), вы можете

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

Ответ 8

В этот момент, почему бы не упомянуть python-audio-tools:

Это лучшее решение, которое я нашел.

(мне нужно было установить libasound2-dev, на Raspbian)

Исключить фрагмент кода на основе:
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)

Ответ 9

Еще один быстрый и простой вариант...

import os

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

Теперь вам может потребоваться внести некоторые небольшие изменения, чтобы заставить его работать. Например, если игроку нужны дополнительные аргументы или вам не нужно указывать полный путь. Но это простой способ сделать это.

Ответ 10

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

Ответ 11

Я попробовал большинство из перечисленных вариантов здесь и обнаружил следующее:

для windows 10: похоже на ответ @Shuge Lee;

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

вам нужно запустить:

$ pip install playsound

для Mac: просто попробуйте следующее, которое запускает команду os,

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

Ответ 12

import pygame
pygame.mixer.init()
pygame.mixer.music.load('music.mp3')
pygame.mixer.music.play()
input()
pygame.event.wait()

Ответ 13

У меня была эта проблема, и я не нашел решения, которое мне понравилось, поэтому я создал оболочку Python для mpg321: mpyg321.

Вам нужно будет установить mpg321 на вашем компьютере, а затем выполнить pip install mpyg321.

Использование довольно просто:

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

Вы также можете определить обратные вызовы для нескольких событий (музыка, приостановленная пользователем, конец песни...).

Ответ 14

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

Ответ 15

Код

import os

os.system("mpg321 song1.mp3")

mpg321 - бесплатный аудиоплеер командной строки, использующий библиотеку декодирования звука.