Estoy escribiendo una aplicación dhtml que crea una simulación interactiva de un sistema. Los datos para la simulación se generan a partir de otra herramienta y ya hay una gran cantidad de datos heredados.
Algunos pasos de la simulación requieren que reproduzcamos clips de audio con "voz en off". No he podido encontrar una manera fácil de lograr esto en varios navegadores.
Soundmanager2 se acerca bastante a lo que necesito, pero solo reproducirá archivos mp3, y los datos heredados también pueden contener algunos archivos .wav.
¿Alguien tiene otras bibliotecas que puedan ayudar?
javascript
audio
cross-browser
cross-platform
dhtml
Jake Stevenson
fuente
fuente
Respuestas:
Tendrá que incluir un complemento como Real Audio o QuickTime para manejar el archivo .wav, pero esto debería funcionar ...
//====================================================================== var soundEmbed = null; //====================================================================== function soundPlay(which) { if (!soundEmbed) { soundEmbed = document.createElement("embed"); soundEmbed.setAttribute("src", "/snd/"+which+".wav"); soundEmbed.setAttribute("hidden", true); soundEmbed.setAttribute("autostart", true); } else { document.body.removeChild(soundEmbed); soundEmbed.removed = true; soundEmbed = null; soundEmbed = document.createElement("embed"); soundEmbed.setAttribute("src", "/snd/"+which+".wav"); soundEmbed.setAttribute("hidden", true); soundEmbed.setAttribute("autostart", true); } soundEmbed.removed = false; document.body.appendChild(soundEmbed); } //======================================================================
fuente
Si está utilizando Prototype, la biblioteca Scriptaculous tiene una API sólida . jQuery parece tener un complemento .
fuente
El código de dacracots es un dom básico limpio, pero ¿tal vez escrito sin pensarlo dos veces? Por supuesto, primero verifica la existencia de una inserción anterior y guarda las líneas de creación de inserción duplicadas.
var soundEmbed = null; //===================================================================== function soundPlay(which) { if (soundEmbed) document.body.removeChild(soundEmbed); soundEmbed = document.createElement("embed"); soundEmbed.setAttribute("src", "/snd/"+which+".wav"); soundEmbed.setAttribute("hidden", true); soundEmbed.setAttribute("autostart", true); document.body.appendChild(soundEmbed); }
Encontré los pensamientos aquí mientras buscaba una solución para una situación similar. Desafortunadamente, mi navegador Mozilla / 5.0 (X11; U; Linux i686; en-US; rv: 1.9.0.15) Gecko / 2009102814 Ubuntu / 8.04 (hardy) Firefox / 3.0.15 muere al intentar esto.
Después de instalar las últimas actualizaciones, Firefox sigue fallando, Opera sigue vivo.
fuente
Creo que la forma más sencilla y conveniente sería reproducir el sonido con un pequeño clip Flash. Aprecio que no es una solución de JavaScript, pero ES la forma más fácil de lograr su objetivo.
Algunos enlaces adicionales de la pregunta similar anterior :
fuente
Puede utilizar la
<audio>
etiqueta HTML5 .fuente
<audio>
etiqueta HTML5 no funciona en IE8-, Android 2.2-, iOS Safari 3.2- u Opera Mini: caniuse.com/#feat=audioMe gustó la respuesta de dacracot ... aquí hay una solución similar en jQuery:
function Play(sound) { $("#sound_").remove() $('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />'); }
fuente
<audio controls> <source src="horse.ogg" type="audio/ogg"> <source src="horse.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio>
Consulte http://www.w3schools.com/html/html5_audio.asp para obtener más detalles.
fuente
Si está utilizando Mootools, existe el complemento MooSound .
fuente
Existe una solución mucho más simple para esto en lugar de tener que recurrir a complementos. IE tiene su propia propiedad bgsound y hay otra forma de hacer que funcione para todos los demás navegadores. Mira mi tutorial aquí = http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html
fuente
Para una solución de navegador cruzado con archivos wav, sugeriría hacer una
<audio>
etiqueta predeterminada y luego buscar la<embed>
solución que @dacracot sugirió antes aquí si el usuario está en IE, puede verificarlo fácilmente con una pequeña búsqueda aquí en SO.fuente