我正在编写一个带有音频播放组件的平台。音频作为wav / mp3 / ogg文件上传到服务器,然后(就像我们的其他媒体一样),转换为base64并存储在我们的redis数据库中。
要在客户端播放音频,我们向服务器发出AJAX请求以获取base64编码的音频。我们有一个与移动应用程序相称的桌面版本,目前音频播放的工作方式如下:
recording.sound = new Audio("data:audio/ogg;base64," + recording.audio);
recording.sound.play(); // this works
今天我们开始在移动设备上进行测试,到目前为止,即使在显然支持HTML5音频的移动浏览器上也无法使其正常运行。
有什么想法吗?或者,如果这是不可能的,我们可以采取不同的方法吗?理想情况下,应该有一个移动兼容版本的Web应用程序,并且必须有一个phonegap版本。
答案 0 :(得分:1)
但“audio / wav”不存在。请参阅此处的规范:http://www.iana.org/assignments/media-types/audio 您应该为.wav文件使用“audio / vnd.dts”,为.mp3文件使用“audio / mpeg”,为.ogg文件使用“audio / ogg”......
好的,试试StackOverflow搜索,参见:
https://stackoverflow.com/search?q=audio+codec+support+mobile+devices+html5
或https://stackoverflow.com/search?q=audio+codec+support+mobile+devices+html
或试试谷歌
一些搜索结果,可能有用:
In search for a library that knows to detect support for specific Audio Video format files
或html5 vs flash - full comparison chart anywhere?
答案 1 :(得分:1)
原因可能不是技术问题,来自Apple开发者网站:
在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上并按数据单元收费,因此会禁用预加载和自动播放。在用户启动数据之前不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动回放之前也处于非活动状态,除非用户操作触发play()或load()方法。换句话说,用户启动的播放按钮有效,但onLoad =“play()”事件不起作用。
同样适用于Android设备。
在此处阅读更多内容:Safari HTML5 Audio and Video Guide