Si quelqu’un peut me fournir un exemple minimaliste qui me permet de jouer un lien de webradio dans un script python en utilisant la lib :
import alsaaudio
2 exemples de lien vers une webradio :
Si quelqu’un peut me fournir un exemple minimaliste qui me permet de jouer un lien de webradio dans un script python en utilisant la lib :
import alsaaudio
2 exemples de lien vers une webradio :
Exemple de Codestral de Mistral AI :
import alsaaudio
import urllib.request
url = 'https://icecast.unitedradio.it/Radio105.mp3'
# Open the URL and start reading the stream
stream = urllib.request.urlopen(url)
# Set up the audio output
output = alsaaudio.PCM(alsaaudio.PCM_PLAYBACK, alsaaudio.PCM_NORMAL)
output.setchannels(2)
output.setrate(44100)
output.setformat(alsaaudio.PCM_FORMAT_S16_LE)
output.setperiodsize(160)
# Play the stream
while True:
data = stream.read(160)
if not data:
break
output.write(data)
A tester ^^
merci infiniment…xnbxhgfshs
en fait j’arrive pas à installer la lib alsaaudio (si elle existe).
je peux lire un wav avec la lib pyaudio. Je cherche maintenant à modifier le script pour lire du stream :
import wave
import sys
import pyaudio
CHUNK = 1024
if len(sys.argv) < 2:
print(f'Plays a wave file. Usage: {sys.argv[0]} filename.wav')
sys.exit(-1)
with wave.open(sys.argv[1], 'rb') as wf:
# Instantiate PyAudio and initialize PortAudio system resources (1)
p = pyaudio.PyAudio()
# Open stream (2)
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
# Play samples from the wave file (3)
while len(data := wf.readframes(CHUNK)): # Requires Python 3.8+ for :=
stream.write(data)
# Close stream (4)
stream.close()
# Release PortAudio system resources (5)
p.terminate()
avec la lib av ça fonctionne comme par magie :
import av
import pyaudio
#container = av.open("YoMama.mp3")
container = av.open("http://icecast.radiofrance.fr/fip-midfi.mp3")
audio_stream = container.streams.audio[0]
samplerate = audio_stream.rate
channels = audio_stream.channels
p = pyaudio.PyAudio()
audio_device = p.open(format=pyaudio.paFloat32,
channels=channels,
rate=samplerate,
output=True)
while True:
try:
frame = next(container.decode(audio=0))
audio_data = frame.to_ndarray().astype('float32')
interleaved_data = audio_data.T.flatten().tobytes()
audio_device.write(interleaved_data)
time = round(float(frame.pts * audio_stream.time_base), 2)
# print(time) # display current time
except (StopIteration, av.error.EOFError):
break
audio_stream.close()
container.close()
audio_device.stop_stream()
audio_device.close()
p.terminate()
Tu as la lib VLC aussi qui marche très bien, c’est ce que j’utilise dans mes projets, j’ai ma radio internet Shoutcast avec sans problème. Fouille dans mon code si tu veux;
Interface d’informations avec lecteur radio intégré.
Lecteur de musique avec Interface Web.
Désolé de te donner le code complet de mes projets, mais tu peux voir comment ça marche dans l’ensemble.
Merci. en fait ça fonctionne tres bien. J’utilise :
player = vlc.MediaPlayer()
player.set_mrl(url)
player.play()
j’ai essayé avec player = self.vlcInstance.media_player_new() mais j’ai pas réussi à changer d’url une fois qu’on en a loadé une.
Plus facile de relacher l’instance et en recréer une nouvelle pour un changement de source.
merci mais quelles sont les commandes pour relacher l’instance et en creer un autre?
et quelle est la différence avec player.set_mrl(url) ?
Ton lecteur est mis dans une variable, pour la « flush » suffit de « unset() » la variable. Seulement si tu rencontre des problème de lecture (garde toujours la première piste en lecture), sinon le set_mrl() permet de fournir la source a lire.
D’accord merci. dans mon exemple je n’ai pas besoin d’utiliser vlc.instance. ca fonctionne sans. juste player.set_mrl(url) et player.play()