在python上播放mp3歌曲
- 2025-02-13 08:36:00
- admin 原创
- 47
问题描述:
我想用 python 播放我的歌曲(mp3),你能给我一个最简单的命令来做到这一点吗?
这是不正确的:
import wave
w = wave.open("e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3","r")
解决方案 1:
获取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 兼容。
解决方案 2:
试试这个。这个方法很简单,但可能不是最好的方法。
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()
请注意,pygame对 的支持MP3
是有限的。此外,正如Samy Bencherif指出的那样,运行上述代码时不会弹出任何愚蠢的 pygame 窗口。
安装很简单-
$pip install pygame
更新:
上述代码仅在以交互方式运行时才会播放音乐,因为调用play()
将立即执行并且脚本将退出。为了避免这种情况,当将代码作为脚本运行时,您可以使用以下命令等待音乐播放完毕然后退出程序。
import time
from pygame import mixer
mixer.init()
mixer.music.load("/file/path/mymusic.ogg")
mixer.music.play()
while mixer.music.get_busy(): # wait for music to finish playing
time.sleep(1)
解决方案 3:
另请参阅playsound
pip install playsound
import playsound
playsound.playsound('/path/to/filename.mp3', True)
解决方案 4:
我尝试了这里列出的大多数选项,发现以下内容:
对于 Windows 10:
类似于@Shuge Lee 的回答;
from playsound import playsound
playsound('/path/file.mp3')
你需要运行:
$ pip install playsound
对于 Mac:只需尝试以下操作,运行 os 命令,
import os
os.system("afplay file.mp3")
解决方案 5:
由于这里还没有提出,但这可能是最简单的解决方案之一:
import subprocess
def play_mp3(path):
subprocess.Popen(['mpg123', '-q', path]).wait()
它依赖于任何兼容 mpg123 的播放器,例如,对于 Debian,你可以使用:
apt-get install mpg123
或者
apt-get install mpg321
解决方案 6:
您正在尝试将 当作.mp3
来玩.wav
。
您可以尝试使用pydub将其转换为.wav
格式,然后将其输入到 pyAudio。
例子:
from pydub import AudioSegment
song = AudioSegment.from_mp3("original.mp3")
song.export("final.wav", format="wav")
或者,使用pygame,如其他答案中所述。
解决方案 7:
如果你正在使用 Jupyter(以前称为 IPython)笔记本,你可以
import IPython.display as ipd
ipd.Audio(filename='path/to/file.mp3')
解决方案 8:
另一个快速而简单的选择...
import os
os.system('start path/to/player/executable path/to/file.mp3')
现在您可能需要进行一些细微的更改才能使其正常工作。例如,如果播放器需要额外的参数,或者您不需要指定完整路径。但这是一种简单的方法。
解决方案 9:
一个简单的解决方案:
import webbrowser
webbrowser.open("C:UsersPublicMusicSample MusicKalimba.mp3")
干杯...
解决方案 10:
我遇到了这个问题并且没有找到任何我喜欢的解决方案,所以我为 mpg321 创建了一个 python 包装器:mpyg321。
您需要在计算机上安装 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
您还可以为多个事件定义回调(用户暂停音乐、歌曲结束......)。
解决方案 11:
在这一点上,为什么不提一下python-audio-tools
:
文档:
http://audiotools.sourceforge.net/programming/audiotools.html?highlight =seek#module-audiotools
这是我找到的最佳解决方案。
(我需要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('
--> playing finished
')
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)
解决方案 12:
你应该像这样使用 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("")
解决方案 13:
from win32com.client import Dispatch
wmp = Dispatch('WMPlayer.OCX')
liste = [r"F:Mp3
ep.Evinden Uzakta.mp3",
r"F:Mp3
ep___SAGOPA_KAJMER___BIR__I.MP3",
r"F:Mp3
ep.Terzi.mp3",
r"F:Mp3
ep 8. Rüya.mp3",
r"F:Mp3
ep8.Battle Edebiyatı.mp3",
r"F:Mp3
ep 9_AUDIOTRACK_09.MP3",
r"F:Mp3
ep. Sagopa Kajmer - Uzun Yollara Devam.mp3",
r"F:Mp3
epPac_-_CHANGE.mp3",
r"F:Mp3
ep. Herkes.mp3",
r"F:Mp3
ep. Sagopa Kajmer - Istakoz.mp3"]
for x in liste:
mp3 = wmp.newMedia(x)
wmp.currentPlaylist.appendItem(mp3)
wmp.controls.play()
解决方案 14:
到目前为止,pydub
对我来说效果最好。类似的模块playsound
也可以完成工作,但它只有一个功能。pydub
有很多功能,比如切片歌曲(文件)、调整音量等……
它就像在 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)
解决方案 15:
对于在 2020 年仍在寻找它的人来说:经过比我预期更长的搜索,我刚刚找到了simpleaudio 库,它看起来维护良好,是 MIT 许可的,可以在 Linux、macOS 和 Windows 上运行,并且只有很少的依赖项(仅python3-dev
在libasound2-dev
Linux 上)。
它支持直接从内存中的缓冲区(例如 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
。
解决方案 16:
正如 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/
解决方案 17:
import os
os.system('file_path/filename.mp3')