reproduzca reproductor reproducir que poner para insertar etiqueta como codigo javascript caching html5 audio webkit

javascript - reproductor - insertar video en html5



Almacenamiento local en HTML5 de la fuente del elemento de audio: ¿es posible? (6)

He estado experimentando con las características de audio y almacenamiento local de html5 y me he topado con algo que me ha dejado perplejo.

Me gustaría poder almacenar en caché o almacenar el origen del elemento de audio localmente para permitir una reproducción más rápida y sin conexión. El problema es que no veo cómo esto es posible con la implementación actual.

He intentado lo siguiente con WebKit:

  1. Crear un archivo de manifiesto para configurar el almacenamiento en caché local, pero el archivo de audio parece no ser un elemento almacenable en caché debido a la forma en que se transmite o algo

  2. También intenté usar javascript para poner un objeto de audio en el almacenamiento local, pero el tamaño del mp3 lo hace imposible debido a problemas de memoria (creo).

  3. He intentado usar los datos uri y base64 para usar el html como un transporte de audio que se puede almacenar en caché, pero una vez más el tamaño del archivo lo hace prohibitivo. Además, al elemento de audio no parece gustarle esto en WebKit (funciona bien en mozilla)

  4. He intentado varios métodos de poner los datos en la tienda de base de datos local. Otra vez sufriendo los mismos problemas que los otros casos.

Me encantaría escuchar cualquier otra idea que alguien pueda tener sobre cómo podría lograr mi objetivo de reproducción sin conexión usando almacenamiento en caché / almacenamiento local en WebKit.


Agregar archivos de video y audio al almacenamiento local funciona con iOS 4.3.

Acabo de agregar un video y un archivo de audio para manifestar y ambos se descargaron al almacenamiento sin conexión en el iPad.


Así que ha pasado un tiempo desde que hice esta pregunta y pensé que daría algo de información sobre cómo lo resolvimos. Básicamente codificamos los datos en PNG usando una técnica similar a esta:

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

Luego guardó en caché la imagen en el dispositivo móvil usando almacenamiento local html5 y accedió a ella según sea necesario. Los PNG eran bastante grandes, pero esto funcionó para nosotros.


He estado tratando de hacer esto yo mismo, en el iOS (para iPhone / iPad) pero se niega a almacenar en caché los archivos de audio sin conexión, incluso si está en Caché Manifiesto.

No produce errores, sino que simplemente simula haber reproducido el elemento de audio si se invoca a través de JavaScript sin control. Si está integrado con un control, muestra un control alternativo que dice "No se puede reproducir el archivo de audio". Funciona bien si la aplicación puede conectarse.

Parece que no se almacena en caché el audio, la reproducción de otro recurso de sonido parece hacer que elimine el recurso anterior de la memoria; esta funcionalidad es bastante inútil incluso cuando está en línea.

He experimentado con base64 codificando el audio como URI de datos. Esto funciona en Safari en el escritorio (al menos para muestras bastante cortas de alrededor de 20-30k que he estado usando) pero parece no ser compatible con iOS, silenciosamente no hace nada, lo cual es muy molesto.

No sé sobre otros proveedores: Google Chrome solía no ser compatible con URI de datos para audio, pero tal vez lo arreglaron ... Parece que por ahora no es posible.

Actualización: discrepancia leve con iPhone OS 3.x (probado con 3.1.2): si se especifica un elemento de audio en una aplicación web sin conexión, pero no tiene control, muestra un control no interactivo con una animación no animada spinner en él (que definitivamente no debería hacer). Supongo que esto está solucionado en iOS 4.x (que debería estar disponible la próxima semana).


Pasé un tiempo tratando de hacer esto para un juego que estoy haciendo, y dado que por lo que pude decir a los navegadores (Firefox y Chrome) aún no soporto el almacenamiento en caché de elementos de audio, pensé que publicaría la solución que encontré.

Hay una solución alternativa descrita aquí: http://dougx.net/plunder/index.php#code

Puedo confirmar que funciona bastante bien, pero que probablemente sea más adecuado para archivos más pequeños. Como describe aquí ( http://dougx.net/plunder/GameSounds.txt ), codifica el audio como cadenas base64 y les da un encabezado de datos: audio / ogg; base64 (o cualquier formato de audio compatible), que HTML5 el audio puede leer. Como esto es solo una cadena, el navegador lo almacenará en caché.


Supongo que sería preferible que funcione el enfoque manifiesto, ya que se siente como el mecanismo más relevante para el almacenamiento en caché local del archivo.

¿Qué sucede si modifica los encabezados HTTP del archivo de audio, por ejemplo, Content-Type y Expires ? ¿El navegador hace algo diferente si se modifica la extensión del archivo?