delam protoyp online audio streameru (online radio) a narazil jsem na par
problemu a nevim si rady.
1] prvni problem se tyka nekonecneho prehravani tracku
2] druhy problem se tyka realtime streamingu - radio si predstavuju tak, za
hraje neustale nekde na pozadi a kazdy kdo se pripoji slysi to same - aktualni
stopu aktualniho songu
Zkusil jsem: pokud jde o ten prvni problem, jdu na to celkem primocare, mam
nejaky list songu (vytazeny z filesystemu kde mi realne ty mp3 lezi) a nahodne
vybiram jeden za druhym, genereuju z nej byte sekvenci a posilam jako opoved. to
cely je zabalene do nekonecne while True smycky
takle na backendu vypada muj kod
# make playlist
root = r"/home/xxx/radio/app/static/audio"
playlist = []
for path, dirs, files in os.walk(root):
forfilein files:
iffile.endswith(".mp3"):
playlist.append(os.path.abspath(os.path.join(path,file)))
# main page
@app.route("/")
def main():
return render_template("mainpage/main.html")
#generate stream of bytesdef gen():
whileTrue:
song = random.choice(playlist)
withopen(song, "rb") as f:
print(song) # DEBUG
data = f.read(1024)
while data:
yield data
data = f.read(1024)
#send stream of bytes as response
@app.route("/stream")
def stream():
return Response(gen(), mimetype="audio/mp3")
frontend je v podstate jenom audio html cudlik ktery to hraje
Ono to jakoby nejak funguje, problem je v tom, ze nekdy se ten tok dat z
nicehonic zastavi a ja nevim proc. melo by to preci hrat furt kdyz je tam
nekonecny while loop. nekdy se treba stane, ze vubec nedohraje prvni track a uz
to skoci nekam dal do prostred nejakeho dalsiho.. nechapu proc..
pokud jde o ten problem cislo [2] tak to v podstate zatim nemam vubec
predstavu jak implementovat..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.