【问题标题】:Issue with getting duration attribute of an audio file when cache is empty缓存为空时获取音频文件的持续时间属性的问题
【发布时间】:2013-04-17 10:56:36
【问题描述】:

我在获取音频/mpeg (mp3) 的元数据时遇到问题。

例如,我使用 JS 来获取音频文件的时长,当缓存为空时,时长值返回“Infinity”(NaN)。

我已尝试使用事件/属性 preload 和 onloadedmetadata,但总是在缓存为空时无法获取音频的持续时间和其他属性。

注意:问题仅出现在我清理缓存时(或者当访问者第一次访问该页面时)。

    audioElement = new Audio('http://www.html5rocks.com/en/tutorials/audio/quick/test.mp3');
    console.log(audioElement);
    audioElement.addEventListener("loadedmetadata", function(_event) {
    var duration = audioElement.duration;
    console.log( duration );
    });

【问题讨论】:

  • 如果持续时间不在元数据中,也许您可​​以添加更多侦听器并在可用时解决。
  • 我现在也遇到了同样的问题,你解决了吗?

标签: jquery html audio mp3 metadata


【解决方案1】:

也许是因为您的媒体正在流式传输?

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement

duration 只读 double
以秒为单位的媒体长度,如果没有可用的媒体数据,则为零。如果媒体数据可用但长度未知,则该值为 NaN。 如果媒体是流媒体并且没有预定义的长度,则值为 Inf

【讨论】:

    【解决方案2】:
    audioElement = new Audio('http://www.html5rocks.com/en/tutorials/audio/quick/test.mp3');
        console.log(audioElement);
        audioElement.addEventListener("loadedmetadata", function(_event) {
        var duration = audioElement.duration;
        console.log( duration );
    });
    

    【讨论】:

      猜你喜欢
      • 2013-03-01
      • 2014-02-08
      • 2010-11-17
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多