Кросс-платформенный, кросс-браузерный способ воспроизведения звука с Javascript?
Я пишу приложение dhtml, которое создает интерактивное моделирование системы. Данные для моделирования генерируются из другого инструмента, и уже имеется очень большое количество устаревших данных.
Некоторые шаги в моделировании требуют, чтобы мы воспроизводили аудиоклипы "голос за кадром". Я не смог найти простой способ сделать это в нескольких браузерах.
Soundmanager2 приближается к тому, что мне нужно, но он будет воспроизводить только mp3 файлы, а устаревшие данные могут содержать некоторые .wav файлы.
Есть ли у кого-нибудь другие библиотеки, которые могут помочь?
Ответы
Ответ 1
Вам придется включить плагин, например Real Audio или 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);
}
//======================================================================
Ответ 2
Если вы используете Prototype, библиотека Scriptaculous имеет звуковой API. jQuery тоже имеет плагин.
Ответ 3
dacracots code - чистый базовый 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 (выносливый) Firefox/3.0.15 умирает при попытке этого.
После установки последних обновлений firefox по-прежнему падает, опера сохраняется.
Ответ 4
Я считаю, что самым простым и удобным способом было бы воспроизвести звук, используя небольшой Flash-клип. Я ценю это не решение для JavaScript, но это самый простой способ достичь вашей цели.
Некоторые дополнительные ссылки из предыдущего аналогичного вопроса:
Ответ 5
Мне понравился ответ dacracot... вот аналогичное решение в jQuery:
function Play(sound) {
$("#sound_").remove()
$('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />');
}
Ответ 6
Если вы используете Mootools, существует плагин MooSound.
Ответ 7
Вы можете использовать тег HTML5 <audio>
.
Ответ 8
<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.
Ответ 9
Это гораздо более простое решение, а не приключение к плагинам. У IE есть собственное свойство bgsound, и есть другой способ заставить его работать для всех других браузеров. Посмотрите мой учебник здесь = http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html