Bufferstatus von audio-tag herausfinden
thomas
- javascript
0 molily
Ich würde gerne auf eine kleine interaktive Animation ohne Flash gestalten. Hierfür müsste ich auf der Webseite mehrere audiotags einbinden. In einem kleinen Fortschrittsbalken möchte ich darstellen zu wieviel % bereits alle geladen sind. Hierfür ist wohl das buffered Attribut zusständig, und im speziellen buffered.length. Habe versucht auf diese zuzugreifen, und via jQuery mich an den progress event zu binden. Dies funktionierte jedoch bei mir weder in Chrome 8.0.552.231, Firefox 3.6.13 oder Safari 5.0.3, da das audio element nicht über diese Eigenschaften verfügt. Über den networkstate kann ich festellen, ob eine Datei komplett geladen ist. Dies ist jedoch nicht besonders elegant, da die Dateien selbst größer sind, und ein fortschrittsbalken bei beispielsweise 2 großen Datein sinnfrei ist, wenn es nur die Zwischenstellung bei 50% kennt.
Hat mir jemand eine Idee, wie und ob das zu lösen ist? Eine Lösung die in allen aktuellen Browsern läuft wäre nice to have. Für den Anfang würde es mir jedoch auch erstmal nur in Chrome reichen. Meine Suchen brachten mich bisher nur zu eben diesem Stand. Möglicherweise habe ich aber einfach auch nur nach den falschen Begriffen gesucht. Jemand einen Tip?
Thomas
Hallo,
zeige mal bitte deinen Code. Vielleicht hast du eine Beispielseite, wo man sich das mal ansehen kann.
Was heißt, das audio-Element verfügt nicht über die Eigenschaften? Über jQuery musst du dir die entsprechenden Eigenschaften über attr() holen, oder du arbeitest direkt mit dem DOM-Elementknoten.
Dich interessiert das Verhältnis von
audioElement.buffered.end(0)
zu
audioElement.duration
Der Quotient dürfte also schon einen brauchbaren Prozentwert ergeben.
buffered ist eine Liste von TimeRanges. Wenn von Anfang geladen wird, dann dürfte length == 1 sein, also holst du dir das Ende der ersten TimeRange mit .end(0).
Mathias