【发布时间】:2021-07-12 13:14:58
【问题描述】:
我正在尝试使用MIDIjs 播放音频(特别是因为我正在使用WAD.js,它使用它)。不幸的是,我不知道如何循环播放音频,文档的缺乏令人沮丧,而且我在源代码中也找不到任何东西。至少我想知道文件何时自然结束并使用MIDIjs.play() 重新启动,但我什至没有看到任何相关信息。
如果有人指出我的解决方案,我将不胜感激,谢谢。
【问题讨论】:
标签: javascript midi
我正在尝试使用MIDIjs 播放音频(特别是因为我正在使用WAD.js,它使用它)。不幸的是,我不知道如何循环播放音频,文档的缺乏令人沮丧,而且我在源代码中也找不到任何东西。至少我想知道文件何时自然结束并使用MIDIjs.play() 重新启动,但我什至没有看到任何相关信息。
如果有人指出我的解决方案,我将不胜感激,谢谢。
【问题讨论】:
标签: javascript midi
正确,没有循环功能(在任何地方都有记录 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 音轨所必须执行的操作。
【讨论】: