我一直在寻找答案,我只能找到一些零碎的东西.我想要做的是加载多个mp3文件(暂时合并它们),然后使用静音检测将它们分割成碎片.
我的理解是我可以使用Mp3FileReader,但问题是:1.如何从mp3文件中读出20秒的音频?我是否需要阅读20次阅读器.WaveFormat.AverageBytesPerSecond?或者可能继续阅读框架,直到Mp3Frame.SampleCount/Mp3Frame.SampleRate的总和超过20秒?2.我如何真正发现沉默?我会查看相应数量的连续样本,以检查它们是否都低于某个阈值.但是我如何访问样本,无论它们是8位还是16位,单声道还是立体声等?我可以直接解码MP3帧吗?3.在示例10465处检测到静音后,如何将其映射回mp3帧索引以执行切割而无需重新编码?
在阅读以下内容之前:马克的答案更容易实现,而且您几乎肯定会对结果感到满意。这个答案是为那些愿意花费大量时间的人准备的。
话虽如此,基于静音切割 MP3 文件而不需要重新编码或完全解码实际上是可能的......基本上,您可以查看每个帧的侧面信息以及每个颗粒的增益和霍夫曼数据来“估计”静音。
现在它变得棘手......