跨平台,跨浏览器的方式从Javascript播放声音?跨平台,跨浏览器的方式从Javascript播

2019-05-08 19:13发布

我写的是创建一个系统的互动模拟一个DHTML应用程序。 用于模拟的数据从另一个工具生成,并且已经有一个非常大的量遗留数据。

在模拟的一些步骤需要我们玩音频的“画外音”剪辑。 我一直无法找到一个简单的方法来在多个浏览器做到这一点。

Soundmanager2出来的结果很接近我所需要的,但它只能播放MP3文件,以及遗留数据可能包含一些.wav文件也是如此。

没有人有任何其他库,可以帮助?

Answer 1:

你将不得不包括一个插件,如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);
    }
//======================================================================


Answer 2:

如果您使用原型,Scriptaculous库拥有完善的API 。 jQuery的似乎有一个插件 ,太。



Answer 3:

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(代)的Firefox / 3.0.15尝试这个时候模具。

安装最新的更新之后,火狐仍然崩溃,歌剧一直活着。



Answer 4:

我认为,最简单,最方便的方法是打使用小闪存剪辑的声音。 我明白这不是一个JavaScript解决方案,但它是实现你的目标的最简单方法

从以前的一些额外的链接类似的问题 :

  • Scriptaculous的,一个Javascript库: http://github.com/madrobby/scriptaculous/wikis/sound
  • 一个开源Flash项目:易Musicplayer对于Flash http://emff.sourceforge.net/


Answer 5:

我喜欢dacracot的答案...这里是jQuery中类似的解决方案:

function Play(sound) {
    $("#sound_").remove()
    $('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />');
}


Answer 6:

您可以使用HTML5 <audio>标签。



Answer 7:

如果您正在使用Mootools的,有MooSound插件 。



Answer 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了解更多详情。



Answer 9:

还有一个更简单的解决这个,而不是诉诸插件。 IE浏览器有它自己的BGSOUND财产,还有另一种方式可以让所有其他浏览器。 点击这里,查看我的教程= http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html



文章来源: Cross-platform, cross-browser way to play sound from Javascript?