Saltar al contenido

Cómo reproducir mp3 desde URL

Solución:

Si tiene VLC instalado (o está dispuesto a instalarlo), entonces esto debería funcionar:

import vlc
p = vlc.MediaPlayer("http://your_mp3_url")
p.play()

Esto tiene la ventaja de que funciona con todo con lo que trabaja VLC, no solo con MP3. También se puede pausar si lo desea.

Puede instalar vlc para python usando

pip install python-vlc

Lo siento, pero no tengo Python3 para probar aquí, para transmitir mp3 utilizando pyaudio necesitará decodificarlo en datos PCM, sé ​​que pymedia puede hacerlo, pero es demasiado antiguo y solo admite python27.

Para hacer esto de la manera correcta, necesitará conocer algunos atributos de su audio, cosas como frecuencia de muestreo, número de canales, resolución de bits, para configurarlo en el pyaudio.

Puedo mostrar cómo lo hago usando python27 + pyaudio, primero mostraré cómo se hace para transmitir .wav

from urllib2 import urlopen
#to python3.x
#from urllib.request import urlopen
import pyaudio


pyaud = pyaudio.PyAudio()

srate=44100

stream = pyaud.open(format = pyaud.get_format_from_width(1),
                channels = 1,
                rate = srate,
                output = True)


url = "http://download.wavetlan.com/SVV/Media/HTTP/WAV/NeroSoundTrax/NeroSoundTrax_test4_PCM_Mono_VBR_8SS_44100Hz.wav"
u = urlopen(url)

data = u.read(8192)

while data:

    stream.write(data)
    data = u.read(8192)

elija un búfer grande, Python es lento en el ciclo while, lo hice usando trozos de tamaño 8192, tenga en cuenta que format, channels y rate son los atributos correctos para esto wav archivo, así que para .wav no necesitamos decodificar, es un PCM datos, ahora para mp3 necesitaremos decodificar y poner PCM formato para transmitir.

Intentemos usar pymedia

from urllib2 import urlopen
import pyaudio
import pymedia.audio.acodec as acodec
import pymedia.muxer as muxer
dm= muxer.Demuxer( 'mp3' )


pyaud = pyaudio.PyAudio()

srate=44100

stream = pyaud.open(format = pyaud.get_format_from_width(2),
                channels = 1,
                rate = srate,
                output = True)


url = "http://www.bensound.org/bensound-music/bensound-dubstep.mp3"

u = urlopen(url)

data = u.read(8192)

while data:

    #Start Decode using pymedia
    dec= None
    s= " "
    sinal=[]
    while len( s ):
        s= data
        if len( s ):
            frames= dm.parse( s )
            for fr in frames:
                if dec== None:
                    # Open decoder
                    dec= acodec.Decoder( dm.streams[ 0 ] )
                r= dec.decode( fr[ 1 ] )
                if r and r.data:
                    din = r.data;
            s=""
    #decode ended

    stream.write(din)
    data = u.read(8192)

Esto puede ser secreto, porque nunca vi a nadie mostrando cómo se puede hacer esto en python, para python3 no sé nada que pueda decodificar .mp3 en pedazos como lo hace pymedia.

Aquí estos dos códigos se transmiten y funcionan para .wav y .mp3

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *