在 midijs 中循环播放音频?
Posted
技术标签:
【中文标题】在 midijs 中循环播放音频?【英文标题】:Looping audio in midijs? 【发布时间】:2021-07-12 13:14:58 【问题描述】:我正在尝试使用MIDIjs 播放音频(特别是因为我正在使用WAD.js,它使用它)。不幸的是,我不知道如何循环播放音频,文档的缺乏令人沮丧,而且我在源代码中也找不到任何东西。至少我想知道文件何时自然结束并使用MIDIjs.play()
重新启动,但我什至没有看到任何相关信息。
如果有人指出我的解决方案,我将不胜感激,谢谢。
【问题讨论】:
【参考方案1】:正确,没有循环功能(在任何地方都有记录 here)。
但是,我们至少可以用MIDIjs.player_callback
模拟它,它每100 毫秒调用一次,对象看起来像 time : number
。这是经过的时间(以秒为单位)。我们可以将它与get_duration
结合起来检测播放结束。
function playAutoReset(url)
// get_duration requires a callback as it returns nothing.
MIDIjs.get_duration(url, function (duration)
console.info(`Duration: $duration`);
// Start the initial play
MIDIjs.play(url);
// This lets us keep track of current play time in seconds
MIDIjs.player_callback = function (mes)
if (mes.time / duration >= 1)
console.info('End reached');
// This plays the audio again
MIDIjs.play(url);
;
);
注意:
这确实每次都调用play
,因此它可能会重新下载源(文档似乎暗示总是如此)。如果您想要更高效的网络,您可能需要查看 XHR/AJAX 并创建一个 object URL,因为文档确实指定 play
需要一个 URL。但是,我认为这将是最简单的解决方案,并且它确实显示了在结束时再次播放 MIDI 音轨所必须执行的操作。
【讨论】:
以上是关于在 midijs 中循环播放音频?的主要内容,如果未能解决你的问题,请参考以下文章