Zum einen ist es einfach ein Bandbreitenproblem. Wenn jeder Client erstmal hundert MB Cache erhalten würde, könnte ein Streamingserver bei gleicher Bandbreite viel weniger Clients versorgen.
Beim Öffnen der Verbindung liefert der Streaming-Server daher nur einen kleinen Burst an Daten. Das sind ein paar wenige Sekunden Cache und so lange hängst du dann auch der realen Zeit hinterher. Zusätzlich zu jedem Delay das auf dem Übertragungsweg ohnehin entsteht.
Von daher will man gerade bei Livestreams eher einen kleinen Cache. Sollte der Cache tatsächlich mal leerlaufen, gibts ein paar Sekunden Zwangspause bevor es weiter geht. Nervig aber immer noch besser als ununterbrochenes stottern.
Alle weiteren Daten hängen dann an der Echtzeit, der Server schickt also 1 Sekunde Daten pro Sekunde...
Einen großen Cache zu füllen sollte trotzdem gehen - ist dann nur mit entsprechender Wartezeit verbunden. 100% sollte man dabei allerdings nicht erreichen, denn dann müssen ja weitere Pakete (die nicht mehr in den Cache reinpassen) verworfen werden und der Stream hat ein Loch.
Beim Abspielen sollte ein einmal gefüllter Cache nicht absinken. Jede Sekunde die du durch zuhören verbrauchst wird vom Server ja wieder aufgefüllt.
Aber:
Das Problem zum anderen ist allerdings dass man den Cache in "Kilobyte" gar nicht messen kann. Bei den meisten Streams hat man eine variable Bitrate. Wenn das Radio dann mal zwischendurch etwas "still" ist, kommen in der Zeit auch viel weniger Daten rein, als wenn gerade viel los ist. Einen Cache in Bytes anzuschauen ist daher wenig sinnvoll, stattdessen sollten einfach die Sekunden angezeigt werden, die der Cache noch abdeckt. Die Größe in Bytes hängt dann von der aktuellen Bitrate ab und ist letztendlich uninteressant.
Eine Cache % Anzeige die auf Byte-Größen basiert kann bei Streams mit variabler Bitrate von daher nur falsch sein.
Bei dem Stream scheint es auch so zu sein daß zuerst ein Werbespot kommt. Das kann dann auch zu einer Sendepause führen. Wenn der Spot 25 Sekunden lang ist kommt 20 Sekunden lang nichts. Denn Daten für deinen Cache brauchst du ja erst wieder, wenn der Spot sich dem Ende neigt. Sonst wäre der Radio-Stream dauerhaft um die Länge des Werbespots verzögert. Das kann dann auch wieder dazu führen, daß der Cache runter geht.
Oder ich denke zu kompliziert und es ist einfach eine Eigenart vom mplayer. Bei mpv bleibt der Cache recht konstant.