将大mp3文件转换为wav计时问题

时间:2014-08-21 10:19:00

标签: c# mp3 wav naudio lame

我正在使用一些大型mp3声音文件。从几个小时到15个多小时不等。 我需要将这些mp3文件转换为wav。 由于文件的大小,无法加载整个文件然后将其转换。

到目前为止我的解决方案是使用NAudio和NAudio.Lame 我修改过:Mp3FileReaderMp3FrameDecompressor 根据我的需要。这是有效的,我可以一次加载100 MB的卡盘并转换它。 由于我的实现,我可以加载Mp3 fils,其中同一mp3文件中的每个帧略有不同(1帧是单声道,另一帧是同一文件中的立体声)。

这一切都很好。

我的问题是原始mp3和生成的wav之间的时间。 一个例子是一个9小时34分38秒的mp3文件,生成的wav文件只有9小时21分15秒。

失去了13分23秒,缩短了3.7%!但我找不到任何在音频中丢失的东西。一切似乎都在那里,它只是,更短。就像音频播放速度比mp3快3.7%。这对我来说是一个问题,因为我需要能够在以后的日期在wav和mp3之间进行映射,我更希望映射是1到1。

我尝试将Mp3文件导入Audacity并获得相同的结果,Audacity中导入的音频再次比原始mp3文件短13分钟。

这让我觉得问题不仅仅是我的代码,对这种行为有解释吗?

2 个答案:

答案 0 :(得分:1)

我通过mp3val传递了MP3文件,问题似乎不是NAudio和NAudio.Lame,而是MP3文件本身。

MP3文件包含错误!

然后修复以确保MP3文件不包含错误。

答案 1 :(得分:0)

MP3文件包含一系列MP3帧 当您将MP3转换为WAV时,您的wav播放器正在读取正确的音频长度 您的原始MP3长度被播放器误解了 有些播放器无法正确读取MP3音频长度,这通常是由于裁剪的帧数