当歌曲在 html 音频标签中重播时,如何消除间隙? [复制]

Posted

技术标签:

【中文标题】当歌曲在 html 音频标签中重播时,如何消除间隙? [复制]【英文标题】:How can I remove the gap when the song replays in the html audio tag? [duplicate] 【发布时间】:2016-04-19 13:50:35 【问题描述】:

当我在 html5 音频元素上使用“循环”属性时,歌曲重播时似乎存在间隙。有没有一种简单的方法可以消除这种差距?

代码:

<audio controls loop preload>
  <source src="http://www.phatdrumloops.com/audio/wav/ifineededs.wav" type="audio/wav">
Your browser does not support the audio element.
</audio>

工作小提琴示例:

https://jsfiddle.net/rmwumaz7/

【问题讨论】:

【参考方案1】:

这实际上是音频标签的问题。但是,您可以尝试通过执行以下操作来最小化影响:

var audio = new Audio('http://www.phatdrumloops.com/audio/wav/ifineededs.wav')
audio.addEventListener('timeupdate', function()
            var buffer = .1
            if(this.currentTime > this.duration - buffer)
                this.currentTime = 0
                this.play()
            , false);
 audio.play()

编辑:根据你们的cmets,我已经挖掘得更深了。这是我发现的: https://github.com/Hivenfour/SeamlessLoop

这里的问题是,您需要以毫秒为单位提供正确的曲目长度(您要循环的曲目)

在这里看到一个小提琴。 https://jsbin.com/simuvoduhi/edit?html,js,output

【讨论】:

这似乎没有帮助,我这次尝试使用 .wav 文件并结合您的解决方案:jsfiddle.net/rmwumaz7/3 嗯。老实说,我绝对没有滞后。在我的 Mac 上完美循环。 我在它们之间有 200 毫秒的延迟,几乎完美,但我仍然注意到差距。当您尝试用吉他在上面弹奏音符时,这一点很明显。 当我在 Audacity 中播放它时,我有一个完美的循环,这是我制作这个循环的程序。 @JimPeeters 稍作调整,应该可以在 javascript 中读取持续时间,如下所示:w3schools.com/jsref/prop_audio_duration.asp

以上是关于当歌曲在 html 音频标签中重播时,如何消除间隙? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 音频流在每首歌曲后停止

如何在谷歌圣诞老人跟踪器等背景中添加音频

HTML 音频标签(识别音频文件但不会播放)

删除图像标签 HTML/CSS 之间的水平间隙 [重复]

Qt:: 如何消除 qmainwindow 中小部件和工具栏之间的间隙

HTML5 音频标签在 Chrome 中显示错误的 MP3 持续时间