Ich habe ein Audio-Element auf meiner Seite, wie diese ein:Gibt es eine Möglichkeit, die Größe der Anfragen zu reduzieren, wenn <audio> mit Vorspannung auf die Verwendung von Metadaten
<audio id="audio" controls preload="metadata">
<source src="/audio/episode.mp3" type="audio/mpeg">
<source src="/audio/episode.ogg" type="audio/ogg">
[Not supported message]
</audio>
Ich war zufrieden mit preload
wird eingestellt "metadata", weil es praktisch ist, die Länge der Datei zu sehen, und es ist gut, in der Lage zu sein, weiterzuspringen, ohne vorher auf die Play-Schaltfläche klicken zu müssen.
Aber dann habe ich festgestellt, dass in Firefox und IE diese "Metadaten" zwischen 20KB und 50KB geladen wurde. Chrome war schlechter, Laden über 1 MB. Scheint wie viel verschwendete Bandbreite für einen Zeitstempel.
Ich weiß, dass preload
von Browsern als more what you'd call 'guidelines' than actual rules behandelt wird. Ich habe auch diese more in-depth article about the issue gefunden.
Gibt es Methoden, um die Größe dieser Anfragen zu reduzieren?
Was ich/Versuchte Considered
Ich versuche, habe schnell die meisten der Metadaten aus einer Datei in einem Texteditor als Test schneiden. Dies machte die Anfragen in Firefox und IE größer, aber es lässt mich optimistisch, dass es einen Weg gibt, um es positiv zu beeinflussen.
Ich habe auch darüber nachgedacht, die Länge auf der Seite einzutragen und sie mit Javascript zu setzen, aber diese Einstellungen scheinen schreibgeschützt zu sein.
Schließlich dachte ich, dass ich als letzten Ausweg eine leere Audiodatei erzeugen könnte, die genau die gleiche Länge hat, komprimiere sie auf eine so kleine Datei wie möglich und dann, wenn der Benutzer damit interagiert , tausche es gegen den echten * aus. An diesem Punkt realisierte ich, dass ich vermutlich etwas Hilfe bekommen sollte ...
* BEARBEITEN: Ich endete, dieses heraus zu versuchen! Es wird nicht für meine Seite funktionieren, aber zumindest ist es interessant. Ich habe es als Antwort unten eingefügt.
Werfen Sie einen Blick auf [Media Source Extension] (https://devdocs.io/dom/media_source_extensions_api). – K3N
@ K3N: Kann ich damit nur die Länge der Quelldatei laden und dann den Browser von dort übernehmen lassen, wenn der User auf play klickt? Oder bedeutet die Verwendung von Media Source Extensions, dass ich mit allem umgehen muss? Die Lernkurve verletzt mein Gehirn ein wenig, aber hoffentlich kann ich bald darüber hinaus kommen. Danke übrigens, das sieht genau so aus, wie ich es brauche! – Obscerno
Ja, MSE ist "low-level" in dem Sinne, dass Sie die meisten Aspekte des Streamen/Pufferns/Verwaltens in Ihrem Code handhaben müssen. Die Dateigröße sollte wie üblich aus der Antwort stammen (es sei denn, es handelt sich um einen tatsächlichen Stream). Sieh dir diesen Blog (https://www.wirewax.com/blog/post/building-a-media-source-html5-player/) für einen Spieler an, der auf MSE basiert. – K3N