我的 javascript 声音不会在 windows XP 中播放?
Posted
技术标签:
【中文标题】我的 javascript 声音不会在 windows XP 中播放?【英文标题】:my javascript sounds wont play in windows XP? 【发布时间】:2013-11-19 14:04:50 【问题描述】:new Audio('sounds/mysound.mp3').play();
我正在使用上面的 javascript 在网络项目上播放声音,在我的笔记本电脑上运行 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 还是在 Windows XP 上的 Chrome/IE 上也失败了? 老实说,自从我在 Windows XP 上测试它已经有一段时间了,它在 3 或 4 台机器上工作,但如果我没记错的话,我相当确定它在 chrome 和 firefox 中不起作用 我确实觉得 Firefox 与 .mp3 不兼容有点奇怪,但它在我的 windows 7 机器上的 Firefox 上播放 mp3 声音完美??难以置信?? @Paul501 在控制台机器上的响应是什么:document.createElement("audio").canPlayType("audio/mp3")
【参考方案1】:
Firefox 依靠机器上可用的 codex 来播放 mp3 来解决许可问题,因此这可能会导致问题。
如果您正在寻找一个声音库来抽象化在具有可变支持的浏览器上支持音频的问题,我推荐SoundJS,我帮助开发。它在可用时使用最新的音频标准,并为较旧的浏览器和系统提供闪存回退。使用 SoundJS,您可以编写一个广泛支持的代码库,包括在移动设备上。
希望对您有所帮助。
【讨论】:
嗨,是的,我发现 firefox 使用 Windows 7+ 上的操作系统来支持 mp3 plaback,这就解释了这个问题。当我有机会时,我会检查 SoundJs,但我认为我确实相信我通过检查浏览器支持的文件类型,然后使用 javascript 变量将文件扩展名设置为 .ogg 来解决上述问题或 .mp3 在 play() 函数上相应地。【参考方案2】: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 或某些媒体播放器上播放曲目。 检查声音/音量设置并调整设置,您可能会将音频发送到错误的频道。 检查您是否有最新的声音驱动程序。 如果这不起作用,请检查您的声卡是否损坏。
【讨论】:
在进行测试之前,我显然检查了声音在 windows XP 机器上是否正常工作.. 我不是要居高临下 Paul,我是想写下所有的可能性,这样你就有了一个清单,你可以在清单上标出。有时最好不要对作者迄今为止所做的事情做出假设。 我知道你不是,所以我没有标记你,对不起,如果我遇到这种情况,这只是令人沮丧,我无法理解它。 我还注意到一件事,你应该尝试使用这个 var bulletAudioReady = false; var bulletAudio = new Audio(); bulletAudio.onload = function() bulletAudioReady = true; ; bulletAudio.src = "音频/BulletShot(1).mp3";子弹音频.play();这样,只有在加载所有内容时才会播放声音 我真的没有任何像 tommy 这样的问题,因为一切都是用 jquery 和 javascript 编写并使用 document.ready 函数,可以播放数百种声音,具体取决于发生的事情时间。【参考方案3】:大多数 html5 声音库(例如 sm2)在为声音创建 audio
元素之前会采取什么措施来解决 some browsers support only certain audio types 被调用 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"]);
【讨论】:
以上是关于我的 javascript 声音不会在 windows XP 中播放?的主要内容,如果未能解决你的问题,请参考以下文章
每当我使用“playsound”在后台播放声音时,我的游戏的其余部分都不会加载