2010-06-18 22 views
19

Tengo un javascript que reproduce audio en el navegador, usando la etiqueta html5 <audio>. Funciona bien en el navegador del iPhone, pero no en Android. (Prueba usando un deseo htc con Android 2.1.) ¿Alguien sabe por qué?Reproducción de audio html5 en el navegador de Android

Mi código:

function playHTML5(sound, soundcv){ 
       // sound = url to m4a audio file 
       // soundcv = div in which the audioplayer should go 

    var audio = document.createElement('audio'); 
    audio.src = sound; 
    audio.controls = "controls"; 
    if (currentSound != null){ 
    soundcv.replaceChild(audio,currentSound); 
    } else { 
    soundcv.appendChild(audio); 
    } 
    currentSound = audio; 
} 

Por cierto, yo también estoy tratando de agrandar el botón de audio que aparece en el iPhone (el predeterminado es bastante pequeña), sin suerte hasta ahora - sería agradecido por cualquier idea!

+0

Pekka: Gracias por fijar el formato! No noté que lo arruiné. –

Respuesta

1

¿Has comprobado tu audio format?

+0

Sí, estoy usando exactamente los mismos archivos multimedia en una aplicación nativa que funciona bien en Android. Audio de 3gp, parte de los archivos multimedia básicos. Entonces, a menos que estos, por alguna razón, no se puedan reproducir en la etiqueta html5, aunque puedan estar en aplicaciones nativas, ¿ese no debería ser el problema? –

+0

Hm, parece que tiene razón: puede haber una diferencia entre los formatos que admite Android en general y los que admite en la etiqueta de audio: http://www.w3schools.com/html5/html5_audio.asp –

+0

@anderslov Probaste en diferentes navegadores. No conozco mucho Android, así que no estoy seguro de qué opciones tienes. – Jla

14

El último navegador de Android en FroYo aún no es compatible con el elemento de audio HTML5. Esto no es un error, sino una característica que aún no se ha implementado. Puede venir en Gingerbread.

Actualización: El navegador Gingerbread tiene el elemento de audio.

+2

http://html5test.com no muestra soporte para PCM, MP3, AAC, Ogg Vorbis o audio WebM en mi navegador FroYo. –

+1

Gracias por su respuesta. Pero si esto no es un error, entonces la documentación obviamente no está clara, por decirlo suavemente, debería decir claramente que el audio no es compatible. –

+0

¿Cómo es la documentación poco clara? Ningún navegador admite html5 100% en este momento. ¿No esperas que documenten todo lo que no admiten que viene por la tubería de w3c? La etiqueta de audio es una nueva característica que los últimos navegadores han comenzado a adoptar. El hecho de que el iPhone lo admita no lo convierte en un error en Android. –

12

Aquí está el enlace al error de Google Android, que se archivó por falta de compatibilidad con la etiqueta AUDIO en Android. Por favor, vote al respecto.

http://code.google.com/p/android/issues/detail?id=10546

Por cierto, hay trabajo alrededor, que le permiten jugar de forma nativa en MP3 Android 1.6 .. 2.2, así:

<video src="test.mp3" onclick="this.play();"></video> 
+0

Tienes razón, funciona bien. – Grego

+2

Wow. En serio, Google? Funciona si lo pones en una etiqueta de video. ¿Qué tan mal lo arruinaron? –

+0

Estoy usando Android 2.3.6 en mi Samsung Mini, pero aún así no pude reproducir mi pequeño mp3 usando la etiqueta de video ni la etiqueta de audio. Lo probé en Chrome y funciona. ¿Puedes confirmar el problema de la etiqueta de video? ¿Alguna otra lectura que pueda vincular al respecto? Gracias :) – Reinsbrain

1

que estaba teniendo problemas en mi encender el fuego, y se encontró una pequeña cosa que parecía arreglarlo.

<audio> 
    <source src="someclip.mp3" type="audio/mpeg" /> 
</audio> 

He estado utilizando erróneamente "audio/mp3". Estoy usando un reproductor sin sus controles nativos (usando HTML5/JS).

1

Lo tengo trabajando en un proyecto usando trigger.io implementando en un Nexus 7 con Android Jellybean, pero el audio solo se reproduce si uso URL absolutas en este momento. No estoy seguro de cuál es la ruta relativa sin embargo, es el uso de audio desde dentro de mi proyecto, pero es de esperar que esto ayudará a alguien ...

(function() { 

    var currentSound; 
    // I have a div called "page" 
    var soundcv = document.body; 

    // This only works for one sound for simplicity's sake 
    function playSound(sound){ 

     if (currentSound == null){ 
      var audio = document.createElement('audio'); 
      audio.src = sound; 
      soundcv.appendChild(audio); 
      currentSound = audio; 
     } 

     currentSound.play(); 
    } 

    // This isn't a real audio file URL - replace it with one of your own 
    playSound('http://example.com/example.mp3'); 
})(); 
+1

Amir de Trigger.io se puso en contacto conmigo y resolvió este problema: si usas createElement ('video'), entonces ¡todo funciona! Eche un vistazo al [juego móvil Soft Paws, etiqueta 0.1, en mi Github] (https://github.com/gavD/soft-paws/tree/v0.1) que se ejecuta en Trigger.io y cuenta con sonido –

0

He estado jugando todo el día en esto y finalmente me dieron la mía para trabajar en mi navegador de edad Samsung Droid con el WebPlayer yahoo:

<a href="somefolder/file.mp3"></a> 
<script type="text/javascript" src="http://webplayer.yahooapis.com/player.js"></script> 

funciona muy bien pone un pequeño icono de la flecha al lado del texto que puede hacer clic para reproducir archivos en MP3. Gracias Yahoo.

Olvidé mencionar que el audio NO aparece en mi navegador Chrome o Firefox al probarlo localmente. Funciona muy bien en el navegador de mi teléfono.

0

Sé que esto es un truco, pero funciona en todas partes (hasta donde yo sé)!

Puede usar el elemento de video y convertir sus mp3 en archivos mp4 y ogg (ogg para firefox en android). También podría diseñarlo para que no muestre ningún jugador predeterminado e incomparable.Ver código de abajo:

<video id="audioTest" width="1" height="1" style="top: -100px; left: -100px; position: absolute;" preload > 
    <source src="audio.mp4" type="video/mp4"> 
    <source src="audio.ogv" type="video/ogg"> 
</video> 

A continuación, podría jugar en el código JS usando:

var audioTest = document.getElementById("audioTest"); 
audioTest.addEventListener("ended",onSoundComplete,false); 
audioTest.play(); 
Cuestiones relacionadas