HTML5本地储存的音频素源-这可能吗?
-
05-07-2019 - |
题
我已经在试验的音频和地方储存功能的html5的延迟和遇到的东西,我难倒。
我想要能够缓存或存储来源的音频素在当地,以使更迅速和离线的播放。问题是我不能看到这是如何可能与目前的执行情况。
我已经尝试了下使用其:
创建一个清单文件中设置了当地的高速缓存,但音频文件似乎不是一个缓项目可能由于它的方式是流或什么的
我们还试图使用javascript把音频对象为本地储存但尺寸的mp3,使这个不可能的,由于存问题(我认为)。
我已经尝试使用的数据uri和base64使用html作为一个音频传输,可以缓,但再次filesize使这个令人望而却步。还有音频素似乎不是这样。(工作现在safari)
我已经尝试了多种方法将数据纳入地方数据库的存储。再次遭受同样问题的其他情况。
我很想听到任何其他的想法,任何人都可能如何,我可以实现我的目标线下放使用缓存/当地的存在。.
解决方案
所以我问这个问题已经有一段时间了,我想我会提供一些关于我们如何解决它的信息。基本上我们使用类似的技术将数据编码为PNG:
http://audioscene.org/scene-files/yury /pngencoding/sample.html
然后使用html5本地存储将图像缓存在移动设备上,并根据需要访问它。 PNG非常大,但这对我们有用。
其他提示
我一直试图在iOS(iPhone / iPad)上自己这样做,但它拒绝在离线状态下缓存音频文件,即使在Cache Manifest中也是如此。
它没有错误,而是简单地假装在没有控件的情况下通过JavaScript调用时播放了音频元素。如果它嵌入了一个控件,它会显示另一个控件,上面写着<!>“;无法播放音频文件。<!>”。如果应用程序能够联机,它可以正常工作。
似乎没有缓存音频,播放另一个声音资源似乎导致它从内存中清除以前的资源 - 即使在线时这也是毫无价值的功能。
我已尝试将base64编码为音频数据URI。这适用于桌面上的Safari(至少对于我一直在使用的大约20-30k的相当短的样本)但似乎在iOS上根本不受支持 - 它默默无效,这非常烦人。
我不了解其他供应商 - 谷歌浏览器曾经不支持音频的数据URI,但也许他们修复了它...... - 现在似乎不可能。但/ / p>
更新:与iPhone OS 3.x的轻微差异(使用3.1.2测试):如果在离线Web应用程序中指定了音频元素但它没有控件,则会显示一个非交互式控件,其中包含它上面没有动画的微调器(它绝对不应该这样做)。我认为这在iOS 4.x中已得到修复(下周应该会出来)。
我花了一段时间尝试为我正在制作的游戏做这件事,并且因为我可以告诉浏览器(Firefox和Chrome)仍然不支持音频元素的缓存我想我会发布解决方案我找到了。
此处描述了一种解决方法: http://dougx.net/plunder/index.php #CODE
我可以确认它的效果非常好,但可能更适合较小的文件。正如他在这里所描述的那样( http://dougx.net/plunder/GameSounds.txt ),你将音频编码为base64字符串,并为它们提供数据:audio / ogg; base64(或任何兼容的音频格式)标题,然后HTML5音频可以读入。因为这只是一个字符串,浏览器将缓存它。
我想最好让清单方法起作用,因为这感觉就像是本地缓存文件最相关的机制。
如果更改音频文件的HTTP标头会发生什么情况,例如Content-Type
和Expires
?如果文件扩展名已更改,浏览器会执行不同的操作吗?
我看到你们没有运气这么远。
你可能想看一看 JAI(JavaScript音频接口) ("世界上第一个javascript的网界面 <audio>
").或者取得联系 阿拉斯泰尔*麦克唐纳, 谁写的。
如果做不到这一点, HTML5医生 可能能够协助。
将视频和音频文件添加到本地存储可与iOS 4.3一起使用。
我刚刚将一个视频和一个音频文件添加到了清单中,它们都被下载到iPad上的离线存储中。