Javascript 移动设备上的HTML5 base64编码音频

Javascript 移动设备上的HTML5 base64编码音频,javascript,android,html,audio,cordova,Javascript,Android,Html,Audio,Cordova,我正在编写一个带有音频播放组件的平台。音频以wav/mp3/ogg文件的形式上传到服务器,然后(像我们的其他媒体一样)转换为base64并存储在我们的redis数据库中 为了在客户端播放音频,我们向服务器发出一个针对base64编码音频的AJAX请求。我们有一个桌面版本,它支持移动应用程序,目前音频播放的工作原理如下: recording.sound = new Audio("data:audio/ogg;base64," + recording.audio); recording.sound.

我正在编写一个带有音频播放组件的平台。音频以wav/mp3/ogg文件的形式上传到服务器,然后(像我们的其他媒体一样)转换为base64并存储在我们的redis数据库中

为了在客户端播放音频,我们向服务器发出一个针对base64编码音频的AJAX请求。我们有一个桌面版本,它支持移动应用程序,目前音频播放的工作原理如下:

recording.sound = new Audio("data:audio/ogg;base64," + recording.audio);
recording.sound.play(); // this works
今天,我们开始在移动设备上进行测试,到目前为止,我们无法让它正常工作,即使是在显然支持HTML5音频的移动浏览器上


有什么想法吗?或者,如果这是不可能的,我们可以采取不同的方法吗?理想情况下,应该有一个移动兼容版本的web应用程序,并且必须有一个phonegap版本。

但是“音频/wav”不存在。请参见此处的规范: 对于.wav文件,您应该使用“audio/vnd.dts”,对于.mp3文件,您应该使用“audio/mpeg”,对于.ogg文件,您应该使用“audio/ogg”

好的,尝试StackOverflow搜索,请参阅:


或者试试谷歌
一些可能有用的搜索结果:


或者

原因可能不是技术原因,苹果开发者网站:

在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上,并按数据单元收费,预加载和自动播放被禁用。在用户启动之前,不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动播放之前也处于非活动状态,除非play()或load()方法由用户操作触发。换句话说,用户启动的播放按钮工作,但onLoad=“Play()”事件不工作

Android设备也是如此


阅读更多信息:

尝试使用音频/ogg和ogg文件,得到了相同的结果。然后我想如果移动设备有内置的ogg编解码器,并且代码没有bug(尝试通过jshint.com发布),那么它应该可以工作了。有没有一个合适的参考资料,我可以用来检查哪些移动浏览器支持哪些编解码器?我认为这可能是最适合你的:所有浏览器都有最常用的编解码器和格式及其支持表;-)