我使用 NAudio 读取特定 MP3 的代码得到的结果与其他几个商业应用程序不同。
具体来说:我的基于 NAudio 的代码在“可听音频”(鼓拾音器)开始之前在此 MP3 的开头找到约 1.4 秒的静音,而其他应用程序(Windows Media Player、RealPlayer、WavePad)在此之前显示约 2.5 秒的静音同样的鼓拾音器。
特定的 MP3 是从 Amazon.com 下载的“Like A Rolling Stone”。测试了其他几个 MP3,没有一个显示我的代码和其他应用程序之间有任何类似的差异。大多数 MP3 都不会以如此长时间的沉默开始,所以我怀疑这就是差异的根源。
调试问题:
我实际上无法找到一种方法来证明其他应用程序是正确的而 NAudio/me 是错误的,即将我的代码的结果逐块与“已知的良好参考实现”进行比较;因此我什至无法精确定义我需要调试的“错误”。
由于我的代码在这 1.4 秒内读取了数千个样本而没有明显错误,因此我想不出如何缩小输入流中的位置/时间以查找错误。
NAudio 代码的核心是对 acmStreamConvert() 的 P/Invoke 调用,这是一个 Windows“黑盒”调用,我想不出如何进行错误检查。
谁能想到调试这个的任何技巧/技术?