Thread Perl script als Router zwischen icecast und VLC client
(14 answers)
Opened by cbxk1xg at 2023-01-16 00:20 2023-01-17T14:41:29 cbxk1xg Das kann so nicht stimmen. Die erste Zeile einer HTTP-Antwort ist der Status Code, erst danach kommt der Inhalt. Vielleicht meinst Du ja HTTP-Streaming? Dazu gibt es Standard-Entwürfe (im Wikipedia-Artikel verlinkt). Da zerlegt der Server die Medien in "Segmente" und der Client setzt die zusammen, es laufen also mehrere HTTP-Requests, um eine MP3-Datei zu übertragen. Der Content-type bei solchen Protokollen ist nicht audio/mpeg! Das prinzipielle Problem Deines Codes bleibt aber bestehen: Wenn Du mit LWP::UserAgent ein get ausführst, dann blockiert das so lange, bis der komplette Inhalt der URL übertragen wurde. Und wenn der Server kontinuierlich sendet, dann... passiert das nie, und Dein Code hängt an der Stelle. Wie Du ja gemerkt hast. Also: Schau' Dir an, welchen Content-type Header Deine Quelle schickt und lies nach, wie man den behandeln muss. Möglicherweise brauchst Du nicht-blockierende Lösungen für den Client (zum Beispiel Mojo::UserAgent mit seiner Methode get_p) und für den Server, um "portionsweise" Daten austauschen zu können. Noch ein Hinweis zum Thema Quote Darauf ist Dein Code nicht gut eingerichtet. Du beginnst mit dem "Saugen" erst, wenn ein Request eintrudelt und holst die Medien dann bei jedem weiteren Request für die gleiche URL erneut. Da wäre vermutlich ein Cache angebracht? Oder eben ein Live-Streaming (wie beim Radio), bei dem die, die sich später zuschalten eben den Anfang verpassen? |