将音频播放限制在指定范围内

时间:2014-10-23 00:01:56

标签: javascript html html5 html5-audio

假设我有一个90秒长的音频文件。

我希望加载此音频文件以供用户播放,但播放时间限制在10到40秒之间。

我想要实现的目标:

  • 音频以10秒开始
  • 当音频结束时,它会重置为10s标记
  • 音频以40秒结束
  • 范围外的音频无法访问

3 个答案:

答案 0 :(得分:3)

有类似的问题

解决方法如下,如果有人试图在外面选择,这会将播放拖动到片段的开头,同样在片段结尾处这样做:

<audio controls ontimeupdate="restrictAudio(this)">
  <source src="horse.ogg" type="audio/ogg">
  <source src="horse.mp3" type="audio/mpeg">

</audio>
<script>
  function restrictAudio(event) {
    // Trying to stop the player if it goes above 10 second
    if (event.currentTime < 10 || event.currentTime > 40) {
      event.pause();
      event.currentTime = 10
    }
  }
</script>

答案 1 :(得分:1)

var startTime = 10;
var endTime = 15;

// Get our audio (could also get an audio element from the DOM)
var audio = new Audio('http://www.tonycuffe.com/mp3/cairnomount.mp3');

// Must start before we can set the time
audio.play();

// Must make sure audio is ready
// see: http://stackoverflow.com/a/20240607/1968462
audio.addEventListener("canplay", function() {
    audio.currentTime = startTime;
});

// Every 1000ms (1 second), we check if we've exceeded the bounds and if so, we
// set the time back to the end.
setInterval(function(){
    if(audio.currentTime > endTime) {
        audio.currentTime = startTime;
    }
    console.log(audio.currentTime);
}, 1000);

示例:http://jsfiddle.net/bn66s67q/1/

请注意,这不是一个好方法。用户必须下载整个文件,而不仅仅是截断的部分。您应该强烈考虑截断文件。您甚至可以使用音频编辑库执行截断服务器端。

另请注意,这并不完全正确。我已将当前时间的日志记录添加到上面的示例中(在JavaScript控制台中查看)。你会注意到你可以休息一下。如果您需要精确度,可以缩短间隔时间。

以上代码适用于最新版本的Firefox,Chrome和IE(我没有测试任何其他版本)。

答案 2 :(得分:0)

<script>
var audiofile = document.getElementById("myAudio");
 var currenttime=  audiofile.currentTime;
 currenttime=10;
 if(currenttime>39){currenttime=10;}
</script>