HTML5音频从A点循环到B点

5
根据规范,HTML5音频具有以下属性: loop:指示音频数据是否应该循环播放。默认值为false。 loopStart:可选值,以秒为单位,如果loop属性为true,则循环应该从哪里开始。其默认值为0,可以设置为0到缓冲区持续时间之间的任何值。 loopEnd:可选值,以秒为单位,如果loop属性为true,则循环应该结束的位置。其默认值为0,可以设置为0到缓冲区持续时间之间的任何值。
我正在尝试循环音频文件的一段,例如从第5秒到第8秒。
我尝试了许多组合,包括使用/不使用:
#t=url参数
DOM中的loopstart/loopend属性 loop属性
到目前为止都没有成功(在Chrome浏览器中)。也许这些属性目前还不支持。我试图避免使用JavaScript来设置音频的当前时间。 HTML
<audio controls="" src="http://www.tonycuffe.com/mp3/tail%20toddle.mp3#t=5,8"        loopstart="5" loopend="8" loop></audio>

JAVASCRIPT

var myAudio = document.getElementsByTagName('audio')[0];
myAudio.loopStart = 5;
myAudio.loopEnd = 8;
myAudio.play();

fiddle

我已经查看了: 到任意位置无缝循环音频HTML5无间隙循环音频


1
对于所有比简单播放/停止更复杂的音频操作,请尝试使用Web Audio API而不是<audio>元素,因为它更强大且定义更清晰。http://www.html5rocks.com/en/tutorials/webaudio/intro/ - Mikko Ohtamaa
确实,我刚刚在阅读相关内容。真是太棒了。根据我迄今所读,Web Audio API使用Ajax来加载音频资源。这限制了我们只能使用位于同一域或具有cors支持的资源。 - CodeToad
据我所知,<audio> 受到相同的 CORS 限制。 - Mikko Ohtamaa
<audio>标签可以使用src属性,该属性可以设置为不同的域名,就像iframe的src一样。但是AudioContext使用ajax,因此更加受限制。例如,http://www.w3schools.com/html/horse.ogg可以使用<audio>标签加载,但无法使用XMLHttpRequest加载到AudioContext中。 - CodeToad
啊哈。知道了,谢谢! - Mikko Ohtamaa
2个回答

1

试试这个。

JS

function audio() {
if (document.getElementById("music").currentTime >= 8) {document.getElementById("music").currentTime = 5}
}

HTML

<audio id="music" controls ontimeupdate="audio()">
<source src="http://www.tonycuffe.com/mp3/tail%20toddle.mp3" type="audio/mp3">
<audio>

1
您介意解释一下为什么这个回答是正确的吗? - Mathemats
每当调用“ontimeupdate”时,它会调用函数“audio()”,该函数将自动重置音频为5。这在固定点(从5到8)之间循环。您可以重新编写此代码,以便8和5被变量替换。如果你想要jquery,可以使用以下代码---- $("#music").bind('timeupdate', audio); - Ryan Kopf

0

将您的音频文件剪切到该时间之后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接