在 python 上播放 mp3歌曲

我想播放我的歌曲(mp3)从巨蟒,你能给我一个最简单的命令做到这一点?

这是不正确的:

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

你试图发挥一个 .mp3就像它是一个 .wav

您可以尝试使用 废话将其转换为 .wav格式,然后将其提供给 pyAudio。

例如:

from pydub import AudioSegment


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

或者,使用 玩具,正如另一个答案中提到的。

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

获取 VLC Python 模块,vlc.py,它提供了对 libVLC 的完全支持,并将其放入站点包中,然后:

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

你可以用下面这句话来阻止它:

>>> p.stop()

除此之外,这个模块还提供了很多其他功能(就像 VLC media player 可以做的任何事情一样) ,但这是播放一个 MP3最简单、最有效的方式。

您可以稍微使用一下 os.path,让它为您查找 MP3的路径,给定文件名并可能限制搜索目录。

完整的文档和预先准备好的模块可以使用 给你

因为这里还没有提到,但这可能是最简单的解决方案之一:

import subprocess


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

它取决于任何符合 mpg123标准的播放器,你可以得到例如 Debian 使用:

apt-get install mpg123

或者

apt-get install mpg321

一个简单的解决办法:

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

干杯。

参见 播放声音

pip install playsound


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

如果您正在使用 Jupiter (以前是 IPython)笔记本,那么您可以

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

另一个简单快捷的选择。

import os


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

现在,您可能需要做一些细微的更改来使其正常工作。例如,如果玩家需要额外的参数,或者你不需要指定完整的路径。但这是一个简单的方法。

在这一点上,为什么不提一下 python-audio-tools:

这是我找到的最好的解决办法。

(我需要在 Raspbian 上安装 libasound2-dev)

代码摘录大致基于:
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)
import os
os.system('file_path/filename.mp3')

我尝试了这里列出的大部分选项,发现如下:

视窗10: 类似@Shuge Lee 的回答;

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

你需要逃跑:

$ pip install playsound

对麦金塔来说: 只需尝试以下操作,运行 os 命令,

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

我遇到了这个问题,没有找到任何我喜欢的解决方案,所以我为 mpg321: Mpyg321创建了一个 python 包装器。

您需要在计算机上安装 mpg123或 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

您还可以为几个事件定义回调(音乐被用户暂停,歌曲结束...)。

So Far, pydub worked best for me. Modules like playsound will also do the job, But It has only one single feature. pydub has many features like slicing the song(file), Adjusting the volume etc...

它就像在 python 中对列表进行切片一样简单。

因此,当谈到只是玩,它是如下所示。

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)

对于那些在2020年还能找到它的人来说: 经过比我预期的更长时间的搜索,我发现了 简单音频库简单音频库,它看起来维护良好,是麻省理工学院授权的,可以在 Linux,macOS 和 Windows 上工作,并且只有很少的依赖性(在 Linux 上只有 python3-devlibasound2-dev)。

它支持从内存中的缓冲区(例如 Numpy 数组)直接播放数据,有一个方便的音频测试功能:

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

您可以从磁盘播放以下文件:

import simpleaudio as sa


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

安装说明 基本上是 pip install simpleaudio

你应该这样使用 pygame:

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

按照 Ben 的建议,您可以使用 pyvlc 模块。但是即使你没有这个模块,你也可以在 Linux 终端上用 VLC 播放 mp3和 mkv 文件:

import os
os.system('nvlc /home/Italiano/dwhelper/"Bella Ciao Originale.mkv"')

更多信息请点击: https://linuxhint.com/play_mp3_files_commandline/