【问题标题】:Is it possible to play multiple audio tracks with delay and loop all?是否可以延迟播放多个音轨并全部循环播放?
【发布时间】:2021-01-29 21:08:18
【问题描述】:

假设我有 3 个(或更多)音轨。我希望他们这样玩:

Track1 > 延迟(x 秒)> Track2 > 延迟 > Track3 > 延迟 > Track1 等...

这个循环应该持续一段定义的时间。同时,它应该播放背景音乐。用户还应该能够在播放时控制语音音量和背景音乐音量。

是否可以这样做,如果可以,实现它的最佳方法是什么?目前我只检查了 HTML 音频元素,它似乎无法处理这种自定义场景。

【问题讨论】:

    标签: javascript html html5-audio


    【解决方案1】:

    尝试运行一个循环,当它执行时,创建一个新的音频元素,添加一个新的音频文件并将其附加到正文并播放。

    但只是为了警告你,这是超级hacky,我想了半秒钟的问题:-)

    最好的办法是为此使用库。

    【讨论】:

      【解决方案2】:

      是的,JavaScript 音频 API 绝对支持这一点。使用AudioScheduledSourceNode

      AudioScheduledSourceNode 接口(Web Audio API 的一部分)是一个 几种音源节点接口的父接口 共享启动和停止的能力,可选择在 指定的时间。具体来说,这个接口定义了 start() 和 stop() 方法,以及 onended 事件处理程序。

      这意味着您为每个轨道创建一个AudioBufferSourceNode,然后控制它们的时间。

      或者,您可以简单地按照您的描述创建多个曲目,然后间歇/以编程方式播放它们。

      这是一个活生生的例子:MDN Multi-Track Example

      这是该示例的 MDN provided 源代码。

      我认为您在使用第二个选项时可能会遇到的问题是提示音轨之间的延迟。最好将每个 AudioBuffer 合并为一个,以避免切换延迟。

      【讨论】:

        猜你喜欢
        • 2011-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        • 2015-11-01
        • 2015-11-06
        • 1970-01-01
        相关资源
        最近更新 更多