Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Nirvikalpa Samadhi:19.12.2019 15:00

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):
    for file in files:
            if file.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 bytes
def gen():
    while True:
            song = random.choice(playlist)
            with open(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

<audio controls>
      <source src="{{ url_for('stream') }}" type="">
 </audio

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..

je to na gunicorn/nginx serveru zde http://172.105.95.71/

Chci docílit: Snazim se dosahnout v podstate funkcniho online radia, ktere neustale streamuje nahodne za sebou tracky z filesystemu

Editováno 19.12.2019 15:01
 
Odpovědět
19.12.2019 15:00
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.

Zobrazeno 1 zpráv z 1.