Javascript html音频元素的自定义起点和终点

Javascript html音频元素的自定义起点和终点,javascript,html,google-chrome,audio,Javascript,Html,Google Chrome,Audio,我有一个html音频元素播放我的曲目。这是一个非常简单的设置: <audio controls loop="loop"> <source type="audio/wav" src="song.wav"> </audio> 似乎没有任何选项可以指定开始和结束时间 我不是要求任何人为我写代码;我正在寻找一个关于如何实现这一点的概念指南。我需要它来处理循环,也就是说,它应该在每个循环中以我指定的值开始和结束。我正在寻找一种完全是客户端的方法,它在Chrom

我有一个html音频元素播放我的曲目。这是一个非常简单的设置:

<audio controls loop="loop">
    <source type="audio/wav" src="song.wav">
</audio>
似乎没有任何选项可以指定开始和结束时间


我不是要求任何人为我写代码;我正在寻找一个关于如何实现这一点的概念指南。我需要它来处理循环,也就是说,它应该在每个循环中以我指定的值开始和结束。我正在寻找一种完全是客户端的方法,它在Chrome中工作

我将修剪.wav文件本身

这是我在评论中链接到的答案的略微修改的代码。。。有关信息,请参见备注


我确实想出了一些可行的办法

canplaythrough
事件将无法满足要求,因为音频将循环播放;此事件仅触发一次

作为替代,我正在使用
timeupdate
事件:(这在coffeescript中)

这似乎很简单,但我不得不做一些调试,因为调用
currentTime=
不起作用(不管发生什么,它只是将时间设置为零)。事实证明,问题实际上是服务器端的(请参阅)

我需要:

  • 将我的服务器配置为使用HTTP 1.1

    • 对于Nginx,我添加了

      proxy_http_version 1.1;
      proxy_set_header Connection "";
      
      到我的
      位置{}

  • 在我的应用程序中,使用响应设置标题
    Accept Ranges:bytes

    您最好查看mdn以供参考。学校是不完整的,而且常常是不正确的。查看:@RobertParham适时地注意到了,但我仍然没有看到任何“开始”或“结束”指令列出。也许这会有所帮助@RobertParham,答案包括在特定时间开始,而不是结束。你说你不想找人为你写代码,所以我想你可以从那里推断……我真的在这里寻找一个客户端专用的解决方案。不幸的是,我认为不会这么简单。Chrome在设置currentTime方面存在问题,并且当音频循环时,
    CanPlay虽然
    无法满足要求。虽然我很感激你的尝试。我会让你知道我在多做一点研究后得出的结论,看来我的问题实际上可能是服务器端的(请参阅)
       window.playbackStart = 2
       window.playbackEnd = 4
    
       $("audio").off("timeupdate").on "timeupdate", (e) ->
          audio = e.currentTarget
          if audio.currentTime > playbackEnd
            audio.currentTime = playbackStart
    
    proxy_http_version 1.1;
    proxy_set_header Connection "";