我在寫一個創建系統交互式模擬的dhtml應用程序。用於模擬的數據是從另一個工具生成的,並且已經有大量的遺留數據。跨平臺,跨瀏覽器的方式來播放Javascript的聲音?
模擬中的某些步驟需要我們播放音頻的「配音」剪輯。我一直無法找到一種簡單的方法在多個瀏覽器中完成此操作。
Soundmanager2非常接近我所需要的,但它只會播放mp3文件,並且遺留數據也可能包含一些.wav文件。
有沒有人有任何其他庫可能有幫助?
我在寫一個創建系統交互式模擬的dhtml應用程序。用於模擬的數據是從另一個工具生成的,並且已經有大量的遺留數據。跨平臺,跨瀏覽器的方式來播放Javascript的聲音?
模擬中的某些步驟需要我們播放音頻的「配音」剪輯。我一直無法找到一種簡單的方法在多個瀏覽器中完成此操作。
Soundmanager2非常接近我所需要的,但它只會播放mp3文件,並且遺留數據也可能包含一些.wav文件。
有沒有人有任何其他庫可能有幫助?
您必須包括一個插件,如Real音頻或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);
}
//======================================================================
我從來不理解贊成票。這工作。我已將它部署在我的應用程序中。爲什麼它值得投票? – dacracot 2008-10-09 17:02:01
作爲問這個問題的人,我也想知道。對我來說,這看起來是一個很好的/簡單的解決方案。有人會評論什麼是錯的嗎? – 2008-10-09 17:57:40
我不知道你爲什麼被拒絕,可能是因爲使用了「真正的音頻」或「quicktime」這兩個詞。也許那個貶低你的人不知道它是如何完成的?至於我,+1,你的代碼幾乎與jQuery插件中使用的代碼大致相同,只是在最接受的答案中聲明的代碼... – karlipoppins 2008-10-23 15:59:43
我相信最簡單最方便的方法就是使用小型Flash剪輯播放聲音。我很欣賞它不是一個JavaScript的解決方案,但它是爲了實現自己的目標
從以前similar question一些額外的鏈接最簡單的方法:
但我找不到任何將播放WAV文件的Flash解決方案。它出現閃光燈只支持MP3。 我會看看scriptaculous的插件,但我討厭爲這個功能包含一個額外的庫。 – 2008-10-09 15:59:56
如果您使用Prototype,Scriptaculous庫has a sound API。 jQuery appears to have a plugin也是如此。
jQuery插件鏈接迴應一個403. – Arion 2012-02-24 22:46:23
如果使用Mootools的,有MooSound plugin。
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仍然崩潰,歌劇保持活着。
您可以使用HTML5 <audio>
標記。
我喜歡dacracot的答案...這裏是jQuery中類似的解決方案:
function Play(sound) {
$("#sound_").remove()
$('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />');
}
<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>
有一個更簡單的解決方案,而不是不得不訴諸插件。 IE有它自己的bgsound屬性,還有另一種方法可以讓它適用於所有其他瀏覽器。看看我的教程在這裏= http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html
很高興你找到你的解決方案,但獨立於此,你可能想考慮將這些.wav文件轉換爲.mp3文件。如果稍微降低音質,您可以從波形文件大小的1/3到1/10的任何位置獲得文件大小。在播放聲音時可能會讓事情更有響應。 – infocyde 2010-09-13 18:35:23