我想从Python播放我的音乐(mp3),你能给我一个最简单的命令吗?
这不正确:
这不正确:
import wave
w = wave.open("e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3","r")
那么为什么不提一下 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)
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()
pydub
对我来说是最好用的。像 playsound
这样的模块也能胜任,但它只有一个功能。而 pydub
有很多功能,比如切割歌曲(文件)、调整音量等等...。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)
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("")
python3-dev
和libasound2-dev
)。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
。
正如Ben所建议的,您可以使用pyvlc模块。但即使您没有该模块,您也可以在Linux终端中使用VLC播放mp3和mkv文件:
import os
os.system('nvlc /home/Italiano/dwhelper/"Bella Ciao Originale.mkv"')
import os
os.system('file_path/filename.mp3')
os.system
。请改用subprocess
或者如果必须的话,甚至可以使用sh
。 - Benos.startfile
代替。 - Jean-François Fabre