Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨浏览器和跨设备音频_Javascript_Html_Audio_Html5 Audio - Fatal编程技术网

Javascript 跨浏览器和跨设备音频

Javascript 跨浏览器和跨设备音频,javascript,html,audio,html5-audio,Javascript,Html,Audio,Html5 Audio,问题 有没有办法在web应用程序中使用音频,使其能够在大多数浏览器(Chrome、FF、Safari和IE9+)和设备(Android/IOS手机版)上运行 我的要求 我需要基本的预加载,一次播放多个声音,点击时静音,或者循环播放(可能不是无缝的吧?;) 到目前为止我学到的: Web音频API在IE和任何Android上都不起作用。() 使用音频标签,我可以在Safari和Chrome上获得相同音频的不同持续时间 我检查过了,但它在某个地方不起作用(为我抛出HTML5错误代码4) 就我所知,似

问题

有没有办法在web应用程序中使用音频,使其能够在大多数浏览器(Chrome、FF、Safari和IE9+)和设备(Android/IOS手机版)上运行

我的要求

我需要基本的预加载,一次播放多个声音,点击时静音,或者循环播放(可能不是无缝的吧?;)

到目前为止我学到的:

  • Web音频API在IE和任何Android上都不起作用。()
  • 使用音频标签,我可以在Safari和Chrome上获得相同音频的不同持续时间
  • 我检查过了,但它在某个地方不起作用(为我抛出HTML5错误代码4)
  • 就我所知,似乎可以跨浏览器和设备工作,但当然有限制:
    • 无法在Android上循环或使用延迟
    • Safari需要安装Quicktime才能播放音频
    • IE9在一次播放多个声音方面有限制
    • 已试用,但无法在我的Android(三星3迷你版4.1.2版)上播放
  • 例如,似乎在Android上也能工作,但还没有进行广泛的测试
    • 当一次播放多个声音并将其中一个声音的音量调高/调低或静音时,直到您停止()并重新开始播放所有声音时,它才会响应
  • 大多数工具都使用Flash作为备用工具,在某些情况下可能很有用
  • 似乎不可能用这些方法无缝地循环声音
  • 您必须提供不同的格式/编解码器才能在各种浏览器中播放声音(我想mp3和ogg就足够了?)
    • Chrome(ogg、mp3、wav)
    • FF(ogg、wav)
    • IE9+(mp3、aac)
    • Safari(mp3、aac、wav)
后续问题

您对这些工具以及其他任何工具有何经验?这些工具是否提供了我需要的东西(跨浏览器、跨设备)

对于我提到的每一个工具,都有评论或网站注释说,在这种情况下有些东西不起作用,或者说……我们在web浏览器中的音频仍然“不存在”吗


感谢您的帮助

Firefox现在支持MP3

<audio src="sound.mp3" type="audio/mpeg" controls></audio>


我不确定移动设备的兼容性,但一般来说,如果你使用声音,那么你应该有一个应用程序而不是一个网站。

你的深入研究给我留下了深刻的印象。我致力于SoundJS,并利用它构建解决方案,使用您提到的移动安全方法,在任何地方都能工作。它已经在Android原生浏览器和Chrome浏览器上成功测试过,也许可以看看它是否适合你。这种方法还应该允许您在Android上循环并使用延迟

不幸的是,正如您所了解的,有各种各样的设备和浏览器问题需要解决。我们已经记录了我们在文档中可能看到的已知问题中发现的所有内容

一个小小的修正,IE9对一个页面上可以存在多少音频标签有一个限制,对我们来说,这个限制总是高于30。如果您需要30多种声音,并且希望确保它能够正常工作,那么您可以始终使用新实现的。您还可以进行浏览器嗅探并强制闪存回退

我们已经做了很多工作,以确保声音循环尽可能顺畅。Web音频应该能够完美地循环,因为我们使用了一种前瞻方法(),可以提前插入下一个播放。人们遇到的一个挑战是mp3将静音插入剪辑()。Html音频循环与浏览器允许使用标记循环属性时一样平滑


希望这对您有所帮助,欢迎您在网上提出任何问题。

谢谢您的回答,很高兴知道FF支持mp3!我会纠正我的问题。我打算使用网络应用程序。您建议我如何使用跨浏览器/设备工作的应用程序?谢谢您的回答;我会调查一下你说的话,等我做更多的研究时再回复你。我再次检查了github示例:它在移动设备上确实有效:我的问题是将我的自定义代码块打包到其中,这样它就会起作用-不幸的是,我不习惯这种类型的编码(函数闭包和范围的自创建)。有什么建议吗?:)可能我将不得不重新构造或重写其中的大部分内容?如果闭包和作用域对您来说是新的,请准备好进行编码冒险。:)我能给你的最好的建议是仔细阅读这两个方面,尤其是javascript范围,因为这往往会给人们带来最多的问题。CreateJS有一个方便的方法,我们可以用它来定义所有事件回调的范围,所以这可能很有用;但大部分来自安格拉斯。另一方面,闭包是我从未玩过的东西。我将阅读这两篇文章并检查createjs.proxy是如何工作的(这是我在检查移动安全示例时不理解的)。谢谢你抽出时间