我使用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有点直接相反)