Кросс-платформенный, кросс-браузерный способ воспроизведения звука из JavaScript?
Я пишу приложение dhtml, которое создает интерактивное моделирование системы. Данные для моделирования генерируются из другого инструмента, и уже существует очень большой объем устаревших данных.
некоторые шаги в моделировании требуют, чтобы мы играли "голос за кадром" клипы аудио. Я не смог найти простой способ сделать это в разных браузерах.
Soundmanager2 подходит довольно близко к тому, что мне нужно, но он будет только играть mp3-файлы и устаревшие данные могут содержать некоторые .wav-файлы, а также.
есть ли у кого-нибудь другие библиотеки, которые могли бы помочь?
9 ответов:
вы должны будете включить плагин, как реальный аудио или QuickTime для обработки .wav-файл, но это должно работать...
//====================================================================== 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); } //======================================================================
Если вы используете прототип, библиотека Scriptaculous имеет звуковой API. jQuery кажется, есть плагин тоже.
код dacracots-это чистый базовый dom, но, возможно, написанный без второй мысли? Конечно, вы сначала проверяете существование более раннего внедрения и сохраняете дубликат внедрить линии создания.
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); }
наткнулся на мысли здесь при сканировании для решения несколько подобной ситуации. К сожалению, мой браузер Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102814 Ubuntu/8.04 (hardy) Firefox / 3.0.15 умирает при попытке этого.
после установка последних обновлений, firefox все еще падает, opera продолжает жить.
Я считаю, что самым простым и удобным способом было бы воспроизведение звука с помощью небольшого флеш-клипа. Я ценю, что это не решение JavaScript, но это самый простой способ достичь своей цели
дополнительные ссылки из предыдущего аналогичный вопрос:
- Scriptaculous, библиотека Javascript:http://github.com/madrobby/scriptaculous/wikis/sound
- проект с открытым исходным кодом Flash: Easy Musicplayer для Flash http://emff.sourceforge.net/
Мне понравился ответ дакракота... вот аналогичное решение в jQuery:
function Play(sound) { $("#sound_").remove() $('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />'); }
Если вы используете Mootools, есть плагин MooSound.
<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>
см.http://www.w3schools.com/html/html5_audio.asp для более подробной информации.
есть гораздо более простое решение для этого, а не прибегая к плагинам. IE имеет свое собственное свойство bgsound, и есть еще один способ заставить его работать для всех других браузеров. Проверьте мой учебник здесь = http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html