Javascript 音频播放器是否预加载音频文件?

Javascript 音频播放器是否预加载音频文件?,javascript,audio,electron,signal-processing,web-audio-api,Javascript,Audio,Electron,Signal Processing,Web Audio Api,我正在使用Electron和Web音频API创建音频播放器。我当前打开和播放音频文件的方法如下所示: 具有本机对话框窗口的用户选择音频文件-它将文件路径加载到本地存储(应用程序存储) 单击“播放按钮”读取文件并将其转换为阵列缓冲区,以便该文件可用于Web音频API const buffer=toArrayBuffer(fs.readFileSync(filePath)); const audioBuffer=等待ctx.decodeAdioData(缓冲区); const soundNode=n

我正在使用ElectronWeb音频API创建音频播放器。我当前打开和播放音频文件的方法如下所示:

  • 具有本机对话框窗口的用户选择音频文件-它将文件路径加载到本地存储(应用程序存储)

  • 单击“播放按钮”读取文件并将其转换为阵列缓冲区,以便该文件可用于Web音频API

  • const buffer=toArrayBuffer(fs.readFileSync(filePath));
    const audioBuffer=等待ctx.decodeAdioData(缓冲区);
    const soundNode=new AudioBufferSourceNode(ctx,{buffer:
    音频缓冲区});
    
    通常,它工作得很好。当我使用超过5MB的文件时,上面显示的打开和转换往往会花费太多时间。 例如,打开9MB的文件需要约3秒钟。这个解决方案是不可接受的,我还有一些问题

    • 在步骤1(打开对话框)中打开音频文件时,是否应将其“预加载”到本地存储
    • 使用Web音频API的Electron是否不够高效,无法创建一个桌面播放器来快速处理本地文件?(我希望不是)

    音频文件解码需要很长时间,因为通过调用
    decodeAudioData
    您要求它将所有文件一次完全解码到原始PCM。如果有人试图打开一个长达数小时的音频文件,它会在时间和内存方面对你的应用程序造成可怕的影响。相反,您可以查看MediaElementAudioSourceNode—它可能需要一个

    @NoGrabbing,它在任何问题上都不会回答问题。音频文件解码需要很长时间,因为通过调用
    decodeAudioData
    ,您要求它立即将所有文件完全解码到原始PCM。如果有人试图打开一个长达数小时的音频文件,它会在时间和内存方面对你的应用程序造成可怕的影响。取而代之的是,您可以查看一个节点,该节点可以接收一个音频。您确定需要网络音频吗?也许只要一个简单的标签就可以了?@1valdis成功了。不知道标签会逐渐解码音频文件。一些处理,如失谐,现在可能会更困难,但这有助于我进一步推进我的项目。谢谢@libros如果您的问题得到解决,我可以发表我的评论作为您接受它的答案,是吗?