【问题标题】:MediaElement.js audio not playing on some devicesMediaElement.js 音频无法在某些设备上播放
【发布时间】:2012-09-26 18:30:21
【问题描述】:

我收到报告说我们的 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。经常点击第二次播放会开始播放。

有人知道从这里到哪里去吗?

【问题讨论】:

    标签: javascript android html5-audio mediaelement.js


    【解决方案1】:

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

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

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

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

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

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

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

    很遗憾,因为这些公司没有动力升级旧设备上的操作系统,而且我们被困在移动社区中,拥有大量声称兼容的不兼容硬件,因此我们甚至无法测试功能,但更确切地说,必须明确地测试设备数据和软件版本 ID。

    【讨论】:

    • 对于创建可在各种设备上播放的文件有任何编码或 ID3 建议吗?
    • @JeffS 我的建议是使用 lame 创建一个完全没有 id3 标记的单声道 cbr mp3——这肯定会在最广泛的情况下工作,但同样存在一些错误将导致编解码器在过于复杂的部分等上失败。从媒体开发人员的角度来看,Android 只是一团糟。你有没有想过为什么 Netflix 只在少数 Android 设备上运行?现在,可悲的是,你知道。
    • 查看我对该行为的评论。事实证明,在某些情况下,这些文件会在浏览器中播放
    • @JeffS 啊,你偶然发现了 Android 地狱的第二层。浏览器和内置媒体播放器的工作方式彼此不同——这也令人困惑。我们的一些视频在从浏览器加载时可以正确播放,但使用MPMediaPlayer 对象启动时会失败。有时反之亦然。你如何让他们在浏览器中玩?什么情况?是双击播放吗?
    • 所有文件都可以在内置媒体播放器中正常播放。在浏览器中,第一次尝试播放的持续时间很长(通常为 1 小时 40 分钟),而第二次尝试播放则按预期进行。
    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多