kleine Rechenaufgabe

TraphiX

Erfahrenes Mitglied
Nabend =)

Ich habe folgendes vor: Ich möchte einen preloader bauen, der anhand der Downloadgeschwindigkeit ermittelt, wieviel des Filmes gebuffert werden muss, damit der Film frühstmöglichst - jedoch komplett - abgespielt werden kann.
Das bedeutet, dass der Film gestartet wird und während er abspielt, reicht die Zeit gerade aus, um den Rest des Filmes (ohne erneutes Buffern) zu laden.

Da stellt sich mir die Frage, wie ich das ausrechne.
 
das setzt aber voraus das die Downloadgeschwindigkeit konstant bleibt ^^

Ausserdem müsstest du für jeden Film wissen wieviel Byte des Films eine Sekunde Spielzeit sind, oder ähnliches.
 
ich weiß wie lange der film in sekunden ist ;)

Es handelt sich bei der Bufferung übrigens um eine exponentialfunktion. und diese Rechnung darf natürlich nicht nur einmal gemacht werden ^^ ist schon klar, dass sich die kb/s nicht konstant bleiben ;)
 
Wenn sich die Qualy bei der Downloadgeschwindigkeit nicht unterscheidet geh doch einfach von der geringsten Downlaoadgeschwindigkeit aus. Währe einfach am besten für alle User da die Downgeschwindigkeit selten konstant bleibt, ich z.B. surfe beim buffern oder lade Sachen usw bis der Film unten ist (im Cache) andere schaun direkt etc. Selbst wenn du einen "Optimalwert" hast variiert der dennoch stark von User zu User.
 
klar, deswegen soll die Bufferzeit ja auch on the fly in regelmäßigen Abständen ermittelt werden. Es geht mir nicht um die Zeit sondern um die %. Für mich ist nur wichtig, wie ich auf den Wert komme, wieviel des Filmes noch geladen werden muss, damit der Film frühstmöglichst abgespielt werden kann. Die Zeit die der Film dann läuft, muss ausreichen um den rest des Filmes weiter zu laden.

zB

Mein Film ist 10 Sekunden lang und 100Kb groß. Ich downloade mit 10kb/s. Nach 5Sekunden habe ich 50% des Filmes geladen und der Film kann starten. Bis ich nun bei Sekunde 5 angekommen bin, sind weitere 50kb (der Rest des Filmes) geladen.

Problem: Nach der 5. Sekunde wird nicht weiter gebuffert (ist ja auch nichts mehr zum buffern da, denn 50 +50 sind 100, was die Gesamtgröße des Films bereits ergibt). Dies jedoch bedeutet, dass der Film zu spät gestartet ist, weil ich den Film Problemlos schon bei Sekunde 4 abspielen lassen könnte.

Die Frage ist also, wie die Rechnung ist, um das ganze so effizient wie möglich auszureizen.

Ich weiß natürlich, dass die Downloadgeschwindigkeit nicht konstant ist, aber das ist ein anderes Problem ;)
 
Zuletzt bearbeitet:
Hallo,

ich würde hier ganz allgemein so ansetzen:

?t_d: Zeit, die noch für den Download benötigt wird (Abschätzung)
?t_f: Laufzeit des Films
t_s: Zeitpunkt ab jetzt, zu dem der Film gestartet werden soll (gesuchte Größe)

Damit der Film und der Download zum gleichen Zeitpunkt enden, muss gelten:
t_s + ?t_f = ?t_d

Aufgelöst nach t_s:
t_s = ?t_d - ?t_f

Jetzt musst du nur noch in regelmäßigen Abständen den Wert von ?t_d geeignet abschätzen. Sobald t_s ? 0 gilt, kann der Film gestartet werden. Dabei wurde allerdings davon ausgegangen, dass der Film über eine (annähernd) konstante Bitrate verfügt.

Grüße, Matthias
 
Ja das klingt schonmal nicht schlecht. Werd mir das am Montag nocheinmal genauer anschauen. Schonmal vielen Dank dafür!!

VG
 

Neue Beiträge

Zurück