【问题标题】:How to append multiple audio files to a currently playing audio using Javascript?如何使用 Javascript 将多个音频文件附加到当前正在播放的音频中?
【发布时间】:2020-08-24 13:50:07
【问题描述】:

我有一个从服务器播放歌曲的程序。为了提高效率,我将服务器上的音频文件拆分为多个片段,然后使用 Ajax 作为 base64 编码将它们发送到客户端。 HTML5 原生音频播放器播放 base64 音频片段,但在播放下一个音频片段时,它会暂停一点然后播放。检索到的片段存储在 IndexedDB 中以便快速访问,但它仍然会导致播放暂停。如何使程序更高效以及修复切换段之间发生的音频暂停。

有没有其他方法可以使用 Javascript 将音频文件附加到当前正在播放的音频源中而不会有任何暂停?

【问题讨论】:

    标签: javascript html audio html5-audio


    【解决方案1】:

    Media Source Extensions API 可以做到这一点,但请注意,您只是在重新发明 Range requests 和缓存,这正是浏览器已经为获取媒体所做的,但它们做得更好,因为它们没有增加 base64 的开销在上面。

    所以“另一种方式”是配置您的服务器以接受 Range 请求,在单个文件中尽可能基本地提供您的文件,并让浏览器完成其工作。

    【讨论】:

    • 你能展示如何使用“接受范围请求”来提供文件吗?
    • 你使用什么后端架构?
    • 我只是在使用运行 PHP 7.4.2 的 Apache 服务器。文件 x.mp3 的片段存储在服务器上,即 x_1.mp3,x_2.mp3,x_3.mp3...。Ajax 获取这些片段并推送到 indexedDb 以供将来播放。
    • 我的回答是你不需要也不应该分块你的文件。提供一个完整的文件。浏览器和服务器都将通过执行范围请求来处理只发送他们需要的内容。除非您明确禁用它,否则您的 apache 服务器应该能够开箱即用地处理 Range 请求。您可以尝试我确实指向的 MDN 文章中提供的 curl 请求。
    猜你喜欢
    • 2017-01-21
    • 2013-08-03
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    相关资源
    最近更新 更多