我对从远程服务器流式传输 mp3 文件并将它们作为一个播放进行了一些研究,但因为我对 Web Audio API 完全陌生,所以我有点困惑。
我拥有的是存储在另一台服务器上的 5 个 MP3 文件的路径。它们的长度约为 10 分钟,因此文件大小“很大”。 我想要下载第一个文件,开始播放它,在播放时我想继续并按顺序下载其他文件。
我读到我需要为每个文件创建一个 XMLHttpRequest 并将其作为“arraybuffer”。然后我需要做的是解码数组缓冲区。 解码它意味着什么?
假设 arraybuffer 已解码,我如何在 html5 标签中播放它? 我如何继续执行 XMLHttpRequests 并将它们添加到已经播放的第一个文件的数组缓冲区中?
编辑:我忘了提及,我不希望每次新的声音文件开始播放时进度条都重新启动...我希望它显示从第一个声音文件到最后一个声音文件的持续时间一个。
最佳答案
如果您只想端到端地播放文件,我认为您尝试执行此操作的方式有点矫枉过正。如果您使用 Web Audio API,XMLHttpRequest 和解码缓冲区将是实现此目的的方法,但您应该能够在没有这些的情况下完成此操作。只需将标签放入 HTML 中,如下所示:
<audio src="1.mp3" autoplay></audio>
<audio src="2.mp3" preload="auto"></audio>
<audio src="3.mp3" preload="auto"></audio>
<audio src="4.mp3" preload="auto"></audio>
<audio src="5.mp3" preload="auto"></audio>
因此,第一个当然会开始自行播放(也许在 iOS 上除外,我认为原则上不支持自动播放)。然后,您的 JavaScript 可以监听每个音频元素上的事件,并在适当的时间开始播放下一个。 onending 事件是要监听的事件。
关于html - 网络音频API : Merging stream of mp3 sounds to one file and playing it in <audio> tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381351/