如何设置音频的持续时间

umuewwlo  于 2022-11-03  发布在  jQuery
关注(0)|答案(3)|浏览(422)

我正在尝试使用音频的HTML DOM持续时间属性设置音频标记的持续时间。
我尝试了以下方法,但似乎不起作用:$('audio')[0].duration = 1;
我已经看过其他答案,但我没有看到任何使用持续时间属性。
如果duration属性是只读的,那么还有什么方法呢?

j8ag8udp

j8ag8udp1#

您无法更改持续时间,因为它已锁定到原始数据(无法通过音频元素更改)。
不过,您可以通过监控时间并在达到阈值时暂停音频来限制播放,从而实现不同持续时间的效果:

  • 使用timeupdate event并根据阈值检查currentTime
  • 您还可以使用requestAnimationFrame轮询相同的值并执行相同的检查
  • 或者,为了实现超精确的计时,您需要使用Web Audio API,为音频创建一个音频缓冲区,然后在首选时间使用start/stop。

在加载端,浏览器可能会加载整个文件。如果你想控制这部分,你必须使用Media Source Extension,它允许你控制缓冲过程。

qeeaahzv

qeeaahzv2#

我想和大家分享一下我是如何解决这个问题的。希望这对你有帮助。假设你在HTML中有一个audio元素(你可以隐藏它):

<audio src="source_to_audio_file.mp3" controls="controls" id="audio_el" type="audio/mpeg"></audio>

您可以使用另一个元素来开始播放音频:

<div><a onclick="play_audio('audio_el',2.01,3.2);"></a></div>

函数play_audio如下所示,它采用三个参数:音频_元素,时间_开始,持续时间
当元素开始播放时,audio元素的属性value被设置为给定的持续时间。然后,您将在timeupdate事件中使用该属性来暂停音频。
在脚本中:

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

mhd8tkvw3#

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

相关问题