var player = document.getElementById("audio_el");
player.addEventListener("timeupdate", function() {
if (player.currentTime - player._startTime >= player.value){
player.pause();
};
});
function play_audio(audio_element,time_start,duration){
var player = document.getElementById(audio_element);
player.value=duration;
player._startTime=time_start;
player.currentTime = time_start;
player.play();
}
sound = new Howl({
src: ['./assets/audio/classic_bell.mp3'], //you can set the custom path
**OR**
src : ['http://...../your url/mp3file.mp3'], //you can also set the url path to set
the audio loop: true,
});
//in method where you want to play the sound
this.sound.play();
setTimeout(()=> {
this.sound.stop();
}, 1000);
3条答案
按热度按时间j8ag8udp1#
您无法更改持续时间,因为它已锁定到原始数据(无法通过音频元素更改)。
不过,您可以通过监控时间并在达到阈值时暂停音频来限制播放,从而实现不同持续时间的效果:
timeupdate
event并根据阈值检查currentTime
requestAnimationFrame
轮询相同的值并执行相同的检查在加载端,浏览器可能会加载整个文件。如果你想控制这部分,你必须使用Media Source Extension,它允许你控制缓冲过程。
qeeaahzv2#
我想和大家分享一下我是如何解决这个问题的。希望这对你有帮助。假设你在HTML中有一个audio元素(你可以隐藏它):
您可以使用另一个元素来开始播放音频:
函数play_audio如下所示,它采用三个参数:音频_元素,时间_开始,持续时间
当元素开始播放时,audio元素的属性value被设置为给定的持续时间。然后,您将在timeupdate事件中使用该属性来暂停音频。
在脚本中:
mhd8tkvw3#