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

IT技术 javascript audio cross-browser cross-platform dhtml
2021-01-19 03:37:31

我正在编写一个 dhtml 应用程序,用于创建系统的交互式模拟。模拟的数据是从另一个工具生成的,已经有非常大量的遗留数据。

模拟中的某些步骤要求我们播放音频的“画外音”剪辑。我一直无法找到一种简单的方法来跨多个浏览器完成此操作。

Soundmanager2非常接近我所需要的,但它只会播放 mp3 文件,并且遗留数据可能也包含一些 .wav 文件。

有没有人有任何其他可能有帮助的图书馆?

6个回答

您必须包含一个像 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);
    }
//======================================================================
我不知道为什么你被否决了,也许是因为使用了“真实音频”或“快速时间”这个词......?也许对你投反对票的人不知道它是如何完成的?至于我,+1,您的代码与最接受的答案中所述的 jQuery 插件中使用的代码几乎相同...
2021-03-21 03:37:31
但是它似乎没有在 FF3.0 中播放声音文件。适用于 Chrome 3、IE7。
2021-03-31 03:37:31
我从不理解投反对票。这有效。我已将其部署在我的应用程序中。为什么它值得投反对票?
2021-04-02 03:37:31
有时我认为这是因为我编写了代码而不是调用当前流行的 API,正如您所说,它们做了完全相同的事情。
2021-04-02 03:37:31
也很好地解决了我的问题。+1。
2021-04-08 03:37:31

如果您使用 Prototype,Scriptaculous 库有一个完善的 APIjQuery似乎也有一个插件

@Pang 关于这个问题的每一个答案在这一点上都已经过时了。现在,您希望使用普遍支持的 HTML5 音频 API。我已将这个问题作为更新的问题的副本结束。
2021-03-16 03:37:31
答案中的第二个链接已失效 - “无法访问此站点”
2021-03-29 03:37:31
jQuery 插件链接响应 403。
2021-04-11 03:37:31

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 保持活动状态。

我相信最简单和最方便的方法是使用小的 Flash 剪辑播放声音。我很欣赏这不是 JavaScript 解决方案,但它是实现目标的最简单方法

上一个类似问题的一些额外链接

但是我找不到任何可以播放 WAV 文件的 Flash 解决方案。看来 flash 只支持 MP3。我会看看 scriptaculous 的插件,但我讨厌为这一点功能包含一个完整的额外库。
2021-03-25 03:37:31

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

该问题特别要求“跨平台、跨浏览器”解决方案。HTML5<audio>标签在 IE8-、Android 2.2-、iOS Safari 3.2- 或 Opera Mini 中不起作用caniuse.com/#feat=audio
2021-03-23 03:37:31
NB in 2018 HTML5 Audio 被除 Opera 之外的所有支持。
2021-03-29 03:37:31