如何防止chrome / FF下AudioContext.decodeAudioData的差异

时间:2015-08-31 16:45:19

标签: javascript google-chrome firefox audio

我使用wavesurfer.js作为我写的工具。我用它来显示某个mp3文件。我遇到的问题是,如果我在两个浏览器中加载mp3文件,那么Chrome中的那个将在开始时被切断。我开始调试问题,似乎从AudioAPI调用audioContext.decodeAudioData导致mp3在chrome中被切断,两种情况下的输入都是一致的(2781字节阵列进入)。

从firefox我得到121248个样本,布局看起来不错,从chrome我得到了114330并且它在开始时被切断了。

我测试了另一个更长的文件,它也给了我6918个样本丢失的差异。

在使用FF的linux下发生同样的问题,返回的样本是124416.(gstreamer插件)

(顺便说一句,这些都是可比较的,因为系统都使用48kHz输出)

在windows下为firefox解码mp3的插件是vlc插件,因为由于许可问题,ff本身无法解码mp3。

该文件编码为: ID3版本2.4.0的音频文件包含:MPEG ADTS,第III层,v2.5,24 kbps,8 kHz,单声道

最初是PCM 32kHz单声道文件

我可以想象由于解码器的不同实现,mp3不是样本一致的。 (有点回答我自己的问题)

在多个浏览器中生成样本一致性的一致编解码器是什么?我知道Wav应该产生可比较的结果,对吧? ogg怎么样?我可以假设样本数量的一致性,因为代码库应该是相同的,或者样本中的这些差异源于audioAPI在不同的浏览器中以不同的方式构建的事实(我认为这与API有点直接相反)

0 个答案:

没有答案