Hallo,
Das Netz ist ja nun mal nicht homogen. Niemand hindert einen Nutzer daran, einen kambodschanischen Webradioservice zu hören. Wenn es dabei zu Lags kommt könnte es durchaus daran liegen, dass in Kambodscha die Datenpakete noch in Eimern von A nach B getragen werden
Da hast du recht.
Es käme wohl letztlich auf den Versuch an, einen Webradiostream mal unkoordiniert über einen Ringpuffer laufen und von BASS wiedergeben zu lassen. Ich müsste mich mal in BASS einlesen ob man da eine Rückinfo bekommt wie viele Daten aus dem Puffer abgerufen und verarbeitet werden. Daraus ließe sich ja ermitteln, wie viele Daten am "unteren Ende" des Puffers verworfen werden können. Entsprechend hätte der Ringspeicher eine dynamische Größe und könnte anwachsen. Ein dynamischer Vorlauf von 3 Minuten oder gar einer Stunde wäre ja heutzutage kein großes Problem mehr,
RAM ist ja i.d.R. genug da.
Vielleicht brauchst du die Info gar nicht bzw. hast sie schon. Ich bin leider in mehreren Jahren noch nicht dazugekommen mir die Bass.dll anzuschauen. Aber wenn die Bass einen TStream, iStream oder ähnliches wiedergeben kann, bekommst du doch automatisch im Streamobjekt mit wie viel wiedergegeben wurde.
Beim genaueren überlegen mein Vorschlag. Erstelle drei Klassen. Eine eigene Stream-Implementierung für den Schreiber (Webkomponente), eine eigene Stream-Implementierung für den Leser (Bass) und eine Ringpuffer-Implementierung. Die Stream-Klassen schreiben/lesen in/aus dem Ringpuffer.
Beim Ringpuffer entweder mit Datenblöcken (ein, zwei KB), welche über Zeiger verkettet sind, arbeiten. Hat den Vorteil das man Daten beim vergrößern des Puffer nicht umkopieren muss, sonder einen neuen Datenblock einfügen kann.
Oder man sieht im Ringpuffer ausreichend Platz für einige Minuten (vielleicht reichen auch Sekunden) vor. Und sollte es mal unter unvorstellbaren Gründen dazu kommen, dass dem Puffer der Platz ausgeht, wirft man bei Schreiben Daten weg. Dann springt die Wiedergabe etwas nach vorne und gleicht das wieder aus.
Ich würde die zweite Variante empfehlen. So würde bei einem wirklichen Livestream die Daten bei nicht zu großen Puffer nahe am Live wiedergegeben. Und bei den anderen kann man bestimmt steuern wie schnell die Daten aus dem Internet kommen.
einbeliebigername.