我的JavaScript声音在Windows XP中无法播放

my javascript sounds wont play in windows XP?

本文关键字:播放 XP Windows JavaScript 声音 我的      更新时间:2023-09-26
new Audio('sounds/mysound.mp3').play();

我使用上面的javascript在Web项目上播放声音,在我的笔记本电脑上运行Windows 7的笔记本电脑上一切正常,在Firefox和Google Chrome中都经过测试。

我遇到的问题是,在Windows XP上,声音根本无法播放?我确实知道浏览器目前对上述内容的支持有点粗略,因为显然不完全支持 mp3,例如在 Firefox 中。所以我有点困惑??为什么它可以在我的Windows 7机器上播放,而不是在Windows XP机器上播放,即使在同一个浏览器中也是如此?

我可能不得不考虑使用插件或其他东西来制作声音,jPlayer 可以播放没有可见播放器图标等的声音吗?因为所有演示都在屏幕上显示某种形式的播放器?

任何帮助表示赞赏。

谢谢保罗

编辑***我认为如果 OGG 文件可以工作,我必须在我的声音文件夹中同时拥有两种声音文件格式,然后使用 javascript 变量添加所需的 .ext,具体取决于所使用的浏览器。

check which browser
extVariable = either '.mp3' or '.ogg' accordingly
new Audio('sounds/mysound'+extVariable).play();

这样,我就不需要每次我想调用声音时 if else 语句:)只需在页面顶部设置 .ext 变量即可。

我在 http://codepen.io/PaulBrUK1972/full/pGdza 进行了以下音频测试就像我认为使用Windows XP一样,ogg文件可以在Firefox中播放,但MP3不会。知道 mp3 是否像在我的机器上一样在其他人的 Windows 7 机器上播放会很有趣,即使它不应该??

Firefox 依靠机器上可用的 codex 来播放 mp3 来解决许可问题,因此可能会导致问题。

如果你正在寻找一个声音库来抽象出在具有变量支持的浏览器上支持音频的问题,我会推荐我帮助开发的 SoundJS。 它使用最新的音频标准(如果可用(,并为较旧的浏览器和系统提供闪存回退。 使用 SoundJS,您可以编写一个广泛支持的代码库,包括在移动设备上。

希望有帮助。

Internet Explorer 9+   can play:  MP3
Firefox 3.6+           can play:  WAV and OGG
Chrome 3+              can play:  MP3 and OGG
Safari  4+             can play:  MP3 and WAV
Opera 9.5+             can play:  WAV and OGG

以上是可以在给定浏览器中播放的音乐文件类型列表,这是我从《Pro HTML5 Games - Aditya Ravi Shankar》一书中获取的内容。这是一本好书,我仍在努力阅读。如果浏览器没有导致问题,您应该检查以下内容:检查是否已插入扬声器/耳机/入耳式耳机。检查音量是否不太低。检查其他音频是否在您的 PC 上正常工作、在 YouTube 或某些媒体播放器上播放曲目。检查声音/音量设置并调整设置,您可能正在从不正确的通道发送音频。检查您是否具有最新的声音驱动程序。如果这不起作用,请检查您的声卡是否未损坏。

大多数

html5 声音库(如 sm2(为了解决某些浏览器仅支持某些音频类型这一事实所做的是在为声音创建 audio 元素之前调用document.createElement("audio").canPlayType(type)

因此,我建议您在创建音频声音时创建一个辅助函数,该声音可能如下所示(抱歉,如果有未经测试的错误(:

var audioTypes = {
   "ogg": "audio/ogg",
   "mp3": "audio/mp3"//etc
}
//src is an array of sources for a type
var createAudio = function(src, options) {
    var audio = document.createElement("audio");
    for (var i = 0; i < src.length; i++) {
        var type = src[i].slice(src[i].lastIndexOf(".") + 1);
        if(audio.canPlayType(audioTypes[type]) {
            audio.type = audioTypes[type];
            audio.src = src[i];
            return audio;
        }
    }
    throw "Unsupported audio";
}

现在只需致电

var mySound = createAudio(["sounds/mySound.ogg", "sounds/mySound.mp3"]);