HTML5音频在Chrome中达到其持续时间之前会自动停止

时间:2018-02-09 18:01:41

标签: html5 angular google-chrome html5-audio

我有一个Angular 2项目正在制作中一段时间​​,我被告知最近一些功能在Chrome中无法正常工作。 Safari工作正常。

经过一番调查后,我意识到问题是音频元素“已结束”的事件并没有被解雇。 我正在打印当前时间/持续时间,所有这些都会以随机的完成百分比自动停止。 e.g。

enter image description here

我完全迷失了可能突然造成这种情况的事情。有什么想法吗?

        let el = <HTMLMediaElement>document.getElementById(id);

        this.audio.src = <string>(<HTMLSourceElement>el.children[0].getAttribute("src"));
        this.audio.load();
        this.audio.play();


        this.audio.onended = function() {
            ...// THIS NEVER RUNS
        }
        this.audio.ontimeupdate = function() {
            console.log(this.currentTime, this.duration);

            ...// THIS DOES BUT currentTime never reaches duration
        }

更新: 我目前正在使用Chrome最新版本64.0.3282.140进行测试,当我降级到版本63时,问题就消失了......

1 个答案:

答案 0 :(得分:0)

这是由Chrome更新中的一个错误造成的,该错误使其音频播放器在复制“损坏的”mp3文件时表现如此。

我们会更深入地讨论here以及此stackoverflow thread

修复文件的推荐方法是:

  • mp3val -f(对我来说不起作用)
  • 使用lame命令重新编码(对我有用)

根据铬虫线程,它将在66版本中修复。