HTML音频无法设置currentTime

Raj*_*jat 23 javascript audio html5

我正在使用Chrome.在我的开发工具控制台中,我尝试了以下方法:

在此输入图像描述

一切都按预期工作,除了最后一行.为什么我不能上台currentTime呢?

另外一般来说,我发现整个HTML5音频的东西不是很可靠.是否有一个强大的javascript包装,可以回退到闪存?

小智 10

检查您的 HTTP 服务器配置,在我的测试环境(Mac OS 上的 Chrome 69)中,设置音频元素的currentTime属性仅在音频源由支持持久连接的 HTTP 服务器提供服务时才有效。

如果你使用的 HTTP 服务器支持持久连接,你会发现(在 Chrome DevTool 中)你的音频源响应头的 Connection 字段是keep-alive。相比之下,如果音频源由不兼容的持久连接服务器提供服务,则响应标头中将没有 Connection 字段

您的音频源 HTTP 请求的状态码也将作为参考,206 Partial Content表示支持长连接的服务器,200 OK表示次等。

  • 我必须确保响应头中存在“Accept-Ranges: bytes”——这就是诀窍! (5认同)

gue*_*314 8

为什么我不能设置currentTime它?

设置为 后无法重现currentTime设置为。持续时间是否小于?01018.mp310

var request = new XMLHttpRequest();
request.open("GET", "/assets/audio/18.mp3", true);
request.responseType = "blob";    
request.onload = function() {
  if (this.status == 200) {
    var audio = new Audio(URL.createObjectURL(this.response));
    audio.load();
    audio.currentTime = 10;
    audio.play();
  }
}
request.send();
Run Code Online (Sandbox Code Playgroud)

jsfiddle http://jsfiddle.net/Lg5L4qso/3/


Mp *_*ega 7

你需要做这样的事情(如果你使用jQuery)

$('#elem_audio').bind('canplay', function() {
  this.currentTime = 10;
});
Run Code Online (Sandbox Code Playgroud)

或者在Javascript中

var aud = document.getElementById("elem_audio");
aud.oncanplay = function() {
    aud.currentTime = 10;
};
Run Code Online (Sandbox Code Playgroud)

此设置背后的原因是您需要确保音频已准备好播放.

  • 因此,我尝试在将“currentTime”更新为“10”之前添加“x.addEventListener('seeked', function () { x.play() })”,结果是相同的。音频播放时从0开始。 (2认同)

Nex*_*exx 5

我遇到了同样的问题,原因是 mp3 文件中缺少标题,例如:

Content-Length, Content-Range, Content-Type

  • 对于 Chrome 70,我还需要添加“Accept-Range: bytes”,即使文件很小并且所有内容都在初始化连接上通过管道传输。 (2认同)