4

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

为了在客户端播放音频,我们向服务器发出 AJAX 请求以获取 base64 编码的音频。我们有一个补充移动应用程序的桌面版本,目前音频播放的工作方式如下:

recording.sound = new Audio("data:audio/ogg;base64," + recording.audio);
recording.sound.play(); // this works

今天我们开始在移动设备上进行测试,但到目前为止还无法让它工作,即使在显然支持 HTML5 音频的移动浏览器上也是如此。

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

4

2 回答 2

1

但是“audio/wav”不存在。请参阅此处的规范:http : //www.iana.org/assignments/media-types/audio 您应该对 .wav 文件使用“audio/vnd.dts”,对 .mp3 文件使用“audio/mpeg”和“audio/ogg” “对于 .ogg 文件...

OK,试试 StackOverflow 搜索,见:
https
://stackoverflow.com/search?q=audio+codec+support+mobile+devices+html5 或https://stackoverflow.com/search?q=audio+codec+support+ mobile+devices+html
或尝试 Google
一些搜索结果,这可能有用:
在搜索一个知道检测对特定音频视频格式文件
html5 与 flash 的支持的库 - 任何地方的完整比较图表?

于 2013-11-10T19:30:39.603 回答
1

原因可能不是技术问题,来自 Apple 开发者网站:

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

这同样适用于 Android 设备。

在此处阅读更多内容:Safari HTML5 音频和视频指南

于 2013-12-13T20:27:22.187 回答