Adafruit_Learning_System_Gu.../CircuitPython_MP3StreamPlayer/code.py

41 lines
1.2 KiB
Python

# SPDX-FileCopyrightText: 2024 Jeff Epler for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# Stream MP3 audio to I2S decoder
#
# Tested with:
#
# * Adafruit Metro ESP32-S3
# * Adafruit Metro ESP32-S2
# * Adafruit Feather ESP32 V2
import time
import adafruit_connection_manager
import adafruit_requests
import audiobusio
import audiomp3
import board
import wifi
mp3_buffer = bytearray(16384)
mp3_decoder = audiomp3.MP3Decoder("/silence.mp3", mp3_buffer)
pool = adafruit_connection_manager.get_radio_socketpool(wifi.radio)
ssl_context = adafruit_connection_manager.get_radio_ssl_context(wifi.radio)
requests = adafruit_requests.Session(pool, ssl_context)
STREAMING_URL = "https://ice2.somafm.com/dronezone-128-mp3"
if "D27" in dir(board):
# Feather ESP32 V2 has D27 instead of D11
i2s = audiobusio.I2SOut(bit_clock=board.D12, word_select=board.D13, data=board.D27)
else:
i2s = audiobusio.I2SOut(bit_clock=board.D12, word_select=board.D13, data=board.D11)
with requests.get(STREAMING_URL, headers={"connection": "close"}, stream=True) as response:
mp3_decoder.file = response.socket
i2s.play(mp3_decoder)
while i2s.playing:
time.sleep(0.1)