MP3文件完整性不正确的常见情况是文件已部分上传到服务器。在这种情况下,指示的音频持续时间与MP3文件中的实际音频持续时间不符:我们可以听到开始的声音,但是在某些时候播放停止,并且指示的音频播放器持续时间中断了。
我尝试使用诸如node-ffprobe之类的库,但似乎它们只是读取元数据,而没有与文件中的真实音频数据进行比较。有没有办法从node.js有效地检测损坏或不完整的MP3文件?
注意:上载MP3文件的客户端是一种硬件(录音机),它在FTP服务器上上载文件。不是浏览器。因此,我无法从客户端上传可能更有用的数据。
MP3文件通常没有持续时间。它们只是一系列MPEG帧。有时,会有一个ID3标签指示持续时间,但并非总是如此。
玩家可以通过选择以下几种方法之一来确定持续时间:
我要说的是这些文件实际上可能没有损坏。它们可能只是你的播放器不知道持续时间的VBR文件。
如果你确信它们已损坏(例如在内容中间停止),则必须弄清楚如何处理它。可能只有几种方法可以确定这一点:
除此之外,由于没有外部容器实际指定期望的帧数,因此你实际上并没有很好的方法来知道流是否不完整。
非常抱歉,我的反馈很晚,非常感谢您的回答。这三种公开的方法非常清楚。幸运的是,我们的记录器正在添加ID3标签的持续时间,因此我可以将此值与您公开的第二种方法进行比较(读取整个文件,浏览帧头),
仅供参考,我使用mp3-duration获取基于帧头的计算的持续时间,并使用music-metadata获取ID3持续时间标签。
很酷,很高兴您找到了可行的解决方案!Borewit的东西很棒……我自己用!