在 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 中循环播放音频?的主要内容,如果未能解决你的问题,请参考以下文章

哪些音频类型可以在 iOS 中无间隙地循环播放?

js中怎么让音频重复播放

音频播放器循环多次运行

如何在 Java 中循环播放音频文件?

如何在 AVAudioPlayer 中循环播放多个音频文件?

如何在没有任何中断的情况下循环播放音频文件?