Skip to content Skip to sidebar Skip to footer

Playing Remote Audio Files In Python?

I'm looking for a solution to easily play remote .mp3 files. I have looked at 'pyglet' module which works on local files, but it seems it can't handle remote files. I could tempora

Solution 1:

You can use GStreamer with python bindings (requires PyGTK).

Then you can use this code:

import pygst
import gst

defon_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...')

GStreamer playbin Docs

UPDATE

Controlling the player:

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

Solution 2:

PyAudio seems to be what you are looking for. It is a python module that allows you to reproduce and record streamed audio files. It also allows you implement the server.

According PyAudio's site: Runs in GNU/Linux, Microsoft Windows, and Apple Mac OS X.

This is an example I copy from http://people.csail.mit.edu/hubert/pyaudio/#examples :

"""PyAudio Example: Play a WAVE file."""import pyaudio
import wave
import sys

CHUNK = 1024iflen(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()

I think you will find this interesting too. And surely brings you some ideas.

Solution 3:

Pygame is a good place to start. Its not perfect by any means, but it does handle sounds, it has a mixer, and midi support as well. It is also cross platform.

Post a Comment for "Playing Remote Audio Files In Python?"