我正在寻找一种轻松播放远程 .mp3 文件的解决方案。我看过“pyglet”模块,该模块适用于本地文件,但它似乎无法处理远程文件。我可以临时下载 .mp3 文件,但由于 .mp3 文件看起来有多大,因此不予推荐。
我更希望它适用于跨平台而不是仅限Windows等。
示例,播放音频文件:
只需在文件下载时传输文件,我的想法是用Python打开Soundcloud歌曲的MP3播放器。
答案 0 :(得分:11)
您可以将GStreamer与python bindings一起使用(需要PyGTK)。
然后你可以使用这段代码:
import pygst
import gst
def on_tag(bus, msg):
taglist = msg.parse_tag()
print 'on_tag:'
for key in taglist.keys():
print '\t%s = %s' % (key, taglist[key])
#our stream to play
music_stream_uri = 'http://mp3channels.webradio.antenne.de/chillout'
#creates a playbin (plays media form an uri)
player = gst.element_factory_make("playbin", "player")
#set the uri
player.set_property('uri', music_stream_uri)
#start playing
player.set_state(gst.STATE_PLAYING)
#listen for tags on the message bus; tag event might be called more than once
bus = player.get_bus()
bus.enable_sync_message_emission()
bus.add_signal_watch()
bus.connect('message::tag', on_tag)
#wait and let the music play
raw_input('Press enter to stop playing...')
<强>更新强>
控制播放器:
def play():
player.set_state(gst.STATE_PLAYING)
def pause():
player.set_state(gst.STATE_PAUSED)
def stop():
player.set_state(gst.STATE_NULL)
def play_new_uri( new_uri ):
player.set_state(gst.STATE_NULL)
player.set_property('uri', new_uri )
play()
答案 1 :(得分:2)
Pygame是个好地方。它无论如何都不完美,但它确实可以处理声音,它还有一个混音器和midi支持。它也是跨平台的。
答案 2 :(得分:2)
PyAudio似乎就是你要找的东西。它是一个python模块,允许您重现和录制流式音频文件。它还允许您实现服务器。
根据PyAudio的网站:在GNU / Linux,Microsoft Windows和Apple Mac OS X中运行。
这是我从http://people.csail.mit.edu/hubert/pyaudio/#examples复制的示例:
"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
import sys
CHUNK = 1024
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
我想你会发现this也很有趣。肯定会带给你一些想法。