javascript - MediaElement.js 音频无法在某些设备上播放

标签 javascript android html5-audio mediaelement.js

我收到报告称我们的 MediaElement.js 音频播放器无法在某一特定 Android 手机上运行。 编辑:有些 mp3 文件可以工作,有些则不行。 mp3 文件都是 Mono 128kbs CBR,没有 ID3 标签。

我们只有一个音频源,一个 mp3,具有所有默认选项。

html 是:

<audio src ="/path/to/a/file.mp3" type='audio/mp3'>

该手机是 HTC Incredible 2,在默认浏览器中运行 2.3.4。同一页面适用于我用于测试的 2.3.4 设备,以及适用于 2.3.3 的 Android 模拟器(不含 Flash)。

根据用户的说法,播放器加载正确,并且看起来正确,但是,无论音频文件的实际长度如何,长度都显示为 1:40:00。通常第二次点击播放就会开始播放。

有人知道接下来该去哪里吗?

最佳答案

音频/视频编解码器库实现对于 Android 中的硬件 vendor 来说是独一无二的 - 并非所有设备都使用相同的库进行音频/视频解码,因为它们使用不同的硬件来实现这些目的。

因此,尤其是在旧版本的 Android 中,媒体播放不可靠。

我在维亚康姆工作了六年,负责处理移动视频和音频传输,这是我遇到过的最令人烦恼的问题之一,因为这个问题没有公平的解决方案,特别是因为你不能强制人们只使用 Flash (让我们面对现实,这是一个可怕的解决方案)。

我们花了很多时间与 Google 开发者倡导者讨论这个问题 - 好处是他们修改了操作系统更高版本的验收套件,这意味着 3.X 和 4.X 在媒体播放方面具有更好的公司间兼容性.

我最喜欢的错误是,如果您的 MP4 视频文件的音频和视频轨道未对齐(它们在符合规范的不同时间开始),则运行任何 2.X 系列的摩托罗拉手机都将无法播放完全没有音频。

所以我想,我的答案是您无法保证在这些设备上可靠播放,并且您应该检查音频属性以确保所有文件都是由具有相同属性的相同编解码器和编码器生成的。

我还会检查是否有些是立体声,有些是单声道,哪些有 IDv3 标签,哪些没有,等等——编解码器真的很挑剔。

这是相当遗憾的,因为这些公司没有动力升级其旧设备上的操作系统,而且我们被困在移动社区中,有大量声称兼容的不兼容硬件,所以我们甚至无法测试功能,相反,不仅必须显式测试设备数据,还必须显式测试软件构建 ID。

关于javascript - MediaElement.js 音频无法在某些设备上播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748983/

相关文章:

php - 将任何音频文件转换为 ogg,而无需在 php 中使用 ffmpeg

iphone - 阻止移动Safari预加载HTML5音频

javascript - Angular Js ng 重复在 div 上显示错误的值

javascript - 如何从 Angular JS 的列表中删除 $id?

android - 通过改造在请求 header 中发送 Firebase ID token (不是授权 token )

android - 如何在Android中使用蓝牙访问另一部手机的文件系统?

javascript - 动态生成HTML5中音频的时间和小数点格式

javascript - obj.key=value 和 obj.set(key, value) 之间的区别?

javascript - 在 xmlHttpRequest 提交中暂停 10 秒

Android:使用 DrawableCompat 进行着色