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

标签 javascript html google-chrome audio

我有一个 html 音频元素正在播放我的轨道。这是一个非常简单的设置:

<audio controls loop="loop">
    <source type="audio/wav" src="song.wav">
</audio>

我认为制作自定义起点和终点也同样简单。 IE。如果我的轨道长 10 秒,我想稍微 trim 一下,以便只播放歌曲的中间部分。

来自the W3 audio tag doc似乎没有任何选项可以指定开始和结束时间。

我并不是要求任何人为我编写代码;我只是要求任何人为我编写代码。我正在寻找有关如何解决此问题的概念指南。我需要它与循环一起工作,即它应该在每个循环中以我指定的值开始和结束。我正在寻找一种完全在客户端且适用于 Chrome 的方法

最佳答案

我确实找到了一些可行的方法。

canplaythrough 事件还不够,因为音频将循环播放;该事件仅触发一次

作为替代方案,我使用 timeupdate 事件:(这在 CoffeeScript 中)

   window.playbackStart = 2
   window.playbackEnd = 4

   $("audio").off("timeupdate").on "timeupdate", (e) ->
      audio = e.currentTarget
      if audio.currentTime > playbackEnd
        audio.currentTime = playbackStart

这看起来很简单,但我必须进行一些调试,因为调用 currentTime = 不起作用(它只是将时间设置为零,无论如何)。事实证明问题实际上是服务器端的(请参阅 https://stackoverflow.com/a/32667819/2981429 )。

我需要:

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

    • 对于 Nginx,我添加了

      proxy_http_version 1.1;
      proxy_set_header Connection "";
      

      到我的位置 { } block

  2. 在我的应用程序中,使用响应设置 header Accept-Ranges: bytes

关于javascript - html 音频元素的自定义起点和终点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357391/

相关文章:

javascript - OnPress for React Native Google Places Autocomplete 由于其父组件而不起作用

javascript - 居中调整图像大小的CSS

javascript - 为什么 Chrome 会拉取旧的 JS 文件?

html - 如何删除页面上不需要的方框字符?

Javascript google maps api 输入地址显示位置

javascript - 使用节点调试器调试 ES6 Mocha 测试

javascript - jQuery append 在 getJSON 回调之外不起作用

javascript - 如何使用 Enter Key 而不是通过 switch 单击按钮

html - 两个脚本之间的 CSS 冲突

html - Webkit 通知 requestPermission 函数不起作用