我已经发现(至少在铬)网络音频重分配wav文件到48k时使用decodeAudioData。有什么办法可以防止这种情况,并迫使它使用文件的原始抽样率?我相信这对于游戏开发来说是可以的,但我正在尝试编写一些音频编辑工具,而这类东西并不酷。我想完全控制何时/如果重采样发生。
发布于 2014-03-05 21:06:28
据我所知,您将得到您的AudioContext使用的任何采样率(这将由您的声卡,我相信)。
他们在这里列出了步骤:https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-decodeAudioData
解码线程将获取结果,表示解码后的线性PCM音频数据,如果与AudioContext的采样速率不同,则将其重采样到audioData的采样率。最终结果(可能经过采样速率转换后)将存储在AudioBuffer中。
发布于 2014-03-05 22:01:09
不,您不能阻止将decodeAudioData重采样到AudioContext的sampleRate中。自己加载并创建AudioBuffers,或者将文件解码到一个OfflineAudioContext中的缓冲区中,该缓冲区将固定在最初设置的速率内(虽然我想很难知道这是什么)。
有关于这一点的讨论-- https://github.com/WebAudio/web-audio-api/issues/30。
发布于 2019-05-13 00:43:21
现在有一个now组件,可以使用sox:https://www.npmjs.com/package/sox-element加载音频。
它允许您解码音频的原始样本率。数据与原始数据保持不变。
https://stackoverflow.com/questions/22208337
复制相似问题