Frage

Ich habe mit den Audio- und lokalen Speicherfunktionen von HTML5 in letzter Zeit experimentiert und bin auf etwas gestoßen, das mich stumpf ist.

Ich möchte in der Lage sein, die Quelle des Audioelements lokal zu speichern oder zu speichern, um eine schnellere und offline -Wiedergabe zu ermöglichen. Das Problem ist, dass ich nicht sehen kann, wie dies mit der aktuellen Implementierung möglich ist.

Ich habe Folgendes mit Webkit ausprobiert:

  1. Erstellen einer Manifestdatei zum Einrichten lokaler Caching, aber die Audiodatei scheint kein Gespeicherungselement zu sein

  2. Ich habe auch versucht, JavaScript zu verwenden, um ein Audioobjekt in den lokalen Speicher zu bringen, aber die Größe des MP3 macht dies aufgrund von Speicherproblemen unmöglich (glaube ich).

  3. Ich habe versucht, die Data URI und Base64 zu verwenden, um das HTML als Audiotransport zu verwenden, der zwischengespeichert werden kann, aber die Dateigröße macht dies erneut unerschwinglich. Auch das Audioelement scheint dies in Webkit nicht zu mögen (funktioniert gut in Mozilla)

  4. Ich habe verschiedene Methoden ausprobiert, um die Daten in den lokalen Datenbankspeicher einzulegen. Wieder mit den gleichen Problemen wie in den anderen Fällen.

Ich würde gerne andere Ideen hören, die jeder haben kann, wie ich mein Ziel der Offline -Wiedergabe mit Caching/Lokalspeicher in Webkit erreichen kann.

War es hilfreich?

Lösung

Es ist also eine Weile her, seit ich diese Frage gestellt habe und ich dachte, ich würde einige Informationen darüber geben, wie wir sie gelöst haben. Grundsätzlich haben wir die Daten in PNGs mithilfe einer ähnlichen Technik dazu codiert:

http://audioscene.org/scene-files/yury/pngencoding/sample.html

Andere Tipps

Ich habe versucht, dies selbst auf dem iOS (für iPhone / iPad) zu tun, aber es weigert sich, Audiodateien in Offline zu speichern, auch wenn es im Cache -Manifest ist.

Es wird nicht fehlerhaft, sondern einfach so vorgeben, das Audioelement gespielt zu haben, wenn sie über JavaScript ohne Kontrolle aufgerufen werden. Wenn es in ein Steuerelement eingebettet ist, zeigt es eine alternative Steuerung mit der Aufschrift "Audiodatei kann nicht abspielen". Es funktioniert gut, wenn die Bewerbung online gehen kann.

Es scheint das Audio nicht zu zwischenspeichern, das Spielen einer anderen Tonressource scheint die vorherige Ressource aus dem Speicher zu entfernen - dies ist eine ziemlich wertlose Funktionalität, auch wenn sie online ist.

Ich habe mit Base64 experimentiert, in dem das Audio als Data URIs codiert wird. Dies funktioniert in Safari auf dem Desktop (zumindest für ziemlich kurze Proben von ungefähr 20 bis 30.000, die ich verwendet habe), scheint aber überhaupt nicht auf iOS unterstützt zu werden - es tut schweigend nichts, was sehr ärgerlich ist.

Ich weiß nichts über andere Anbieter - Google Chrome hat früher Daten URIs für Audio unterstützt, aber vielleicht haben sie es repariert ... - es scheint jedoch vorerst nicht möglich zu sein.

UPDATE: Kleinere Diskrepanz mit iPhone OS 3.x (getestet mit 3.1.2): Wenn ein Audioelement in einer Offline-Web-App angegeben ist, es jedoch keine Steuerung hat, zeigt es eine nicht interaktive Steuerung mit einem nichtanimierten Anlagen an Spinner drauf (was es definitiv nicht tun sollte). Ich gehe davon aus, dass dies in iOS 4.x festgelegt ist (was nächste Woche erscheinen sollte).

Ich habe eine Weile versucht, dies für ein Spiel zu tun, das ich mache, und da ich Browsern (Firefox und Chrome) sagen konnte, unterstütze ich immer noch nicht die Auseinandersetzung mit Audioelementen, die ich dachte, ich würde die Lösung veröffentlichen, die ich gefunden habe.

Hier wird eine Problemumgehung beschrieben: http://dougx.net/plunder/index.php#code

Ich kann bestätigen, dass es ziemlich gut funktioniert, ist aber wahrscheinlich besser für kleinere Dateien geeignet. Wie er hier beschreibt (http://dougx.net/plunder/gamesounds.txt), Sie codieren das Audio als Basis64 .

Ich denke, es wäre vorzuziehen, den offensichtlichen Ansatz zum Laufen zu bringen, da dies der relevanteste Mechanismus für das lokale Zwischenspeichern der Datei anfühlt.

Was passiert, wenn Sie die HTTP -Header der Audiodatei ändern, z. B. Content-Type und Expires? Macht der Browser etwas anderes, wenn die Dateierweiterung geändert wird?

Ich sehe, Sie hatten bisher kein Glück.

Vielleicht möchten Sie sich ansehen JAI (JavaScript -Audio -Schnittstelle) ("Die erste JavaScript -Schnittstelle der Welt für Web <audio>"). Oder setze dich an mit Alastair MacDonald, Wer schrieb es.

Das fehlschlag, die, die HTML5 Doktor kann helfen.

Das Hinzufügen von Video- und Audiodateien zum lokalen Speicher funktioniert mit iOS 4.3.

Ich habe gerade ein Video und eine Audiodatei hinzugefügt, um sich zu manifestieren, und beide wurden auf iPad auf Offline -Speicher heruntergeladen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top