【发布时间】:2015-07-16 13:27:24
【问题描述】:
今天我遇到了一个不愉快的问题。有一个带有自定义 HTML5 音频播放器的网站。页面加载后,我尝试回显document.getElementById("myAudioId").duration,它是使导航成为可能所必需的。在其他所有浏览器中它都可以正常工作,显示持续时间,但 IE11 的工作方式不同 - 它显示持续时间等于 Infinity。但正如我注意到的,当歌曲被缓冲到结尾时,持续时间神奇地出现并且导航工作。在其他浏览器中,一切从一开始就有效。设置了内容长度标头。会是什么?
UPD: 其他带有 HTML5 音频的网站让我从一开始就看到了持续时间。我猜,持续时间是元数据的一部分,即使不使用 preload="metadata" 预加载音频文件也可以加载,但它也不起作用。
UPD2:我也尝试过使用 jsfiddle 并在那里创建了相同的音频标签和相同的 MP3 音频 - 情况相同。但后来我从另一个站点插入了另一个 MP3 的链接 - 并且它起作用了!。不仅如此,我已经将第二首歌曲上传到了第一个有问题的网站,之后这首完美运行的歌曲也无法向我展示它的持续时间和内容。所以现在我认为这是服务器端的东西。但不知道是什么。
UPD3: 最后,有人告诉我,使用 FFMPEG 将文件转换为 128 位 MP3,然后它们就不再正常了。现在我需要找到我应该如何转换 MP3 才能正常使用。
【问题讨论】:
-
从文档到文档:duration 只读(双精度)媒体的长度,以秒为单位,如果没有可用的媒体数据,则为零。如果媒体数据可用但长度未知,则该值为 NaN。 如果媒体是流媒体并且没有预定义的长度,则值为 Inf。 developer.mozilla.org/en/docs/Web/API/HTMLMediaElement - 结论:IE 仅在完全缓冲时假定长度。
-
@somethinghere 和 this demo 呢? IE 从一开始就可以识别持续时间。也许
controls属性才是最重要的?
标签: html audio ffmpeg converter internet-explorer-11