HTML音频无法设置currentTime

问题描述 投票:20回答:6

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

enter image description here

一切都按预期工作,除了最后一行。为什么我不能在它上面设置currentTime

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

javascript html5 audio
6个回答
6
投票

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

$('#elem_audio').bind('canplay', function() {
  this.currentTime = 10;
});

或者在Javascript中

var aud = document.getElementById("elem_audio");
aud.oncanplay = function() {
    aud.currentTime = 10;
};

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


2
投票

为什么我不能在它上面设置currentTime

设置为currentTime后无法重现0被设置为1018.mp3持续时间是否低于10

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();

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


2
投票

我有同样的问题,原因是在mp3文件上缺少标题,如:

Content-Length, Content-Range, Content-Type


2
投票

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

如果您使用的HTTP服务器支持持久连接,您将发现(在Chrome DevTool中)音频源响应头的Connection字段保持活动状态。相反,如果音频源由持久连接不兼容的服务器提供服务,则响应头中将不存在连接字段。

您的音频源HTTP请求的状态代码也将是一个参考,206部分内容用于持久连接支持的服务器,200 OK用于劣质服务器。


1
投票

我的猜测是'10'比mp3的长度长。

但是记录mp3的长度而不是'0'。

你的Chrome版本是什么?


0
投票

设置currentTime我唯一可靠的工作方法是使用onprogress事件。

audio.onprogress = function() {
  if (audio.currentTime == 0) {
    audio.currentTime = 10;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.