Thread Perl script als Router zwischen icecast und VLC client
(14 answers)
Opened by cbxk1xg at 2023-01-16 00:20
Das, was Du hier betreibst, ist kein Streaming, sondern Download: Ich sehe zwei GET-Requests für $source_url, jeder wartet, bis die vollständige MP3-Datei angekommen ist. Warum zwei? Für den ersten Request, dessen Content Du nicht benutzt, wäre ein HEAD-Request angebracht, aber ich kenne icecast nicht und weiß nicht, ob der das unterstützt.
Beim Streaming holt man die Datei portionsweise und liefert diese Portionen dann gleich wieder aus, ohne die jemals lokal speichern zu müssen. Du müsstest also erstens Deinen LWP::UserAgent so ändern, dass er die Quellen portionsweise liest und zweitens Deinen Plack-Server so ändern, dass er einen Header Accept-Ranges: bytes ausspuckt und dann auch nur die Teile ausliefert, die Dein Browser verlangt. Und dann holst Du mit dem $ua die Portionen erst dann, wenn der Browser sie von Dir verlangt. Du brauchst dann gar nichts zu speichern! |