将wav转换为mp3并返回wav

时间:2017-03-29 16:32:15

标签: c# winforms mp3 wav naudio

我正在使用Ludio的NAudio包装器将我的wav文件转换为mp3。但是,当我使用NAudio将我的mp3转换回wav时,wav文件比原始的wav文件略大。有没有办法让我可以得到它,以便原始和解码的wav文件大小完全相同?除此之外,其他一切都有效,我可以毫无问题地播放wav和mp3文件。谢谢,我已将转换功能包含在下面:

private void ConvertWavMP3(string wavFile)
    {
        try
        {
            using (var wavRdr = new WaveFileReader(wavFile))
            using (var mp3Writer = new LameMP3FileWriter(wavFile.Replace(".wav", ".mp3"), wavRdr.WaveFormat, 128))
            {
                wavRdr.CopyTo(mp3Writer);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error converting wav to mp3.", "CONVERSION ERROR");
        }
    }

    private static void ConvertMp3ToWav(string mp3File)
    {
        try
        {
            using (Mp3FileReader reader = new Mp3FileReader(mp3File))
            {
                //using (WaveStream pcmStream = new WaveFormatConversionStream(new WaveFormat(8000, 16, 1), reader))
                using (WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(reader))
                {
                    WaveFileWriter.CreateWaveFile(mp3File.Replace(".mp3", ".wav"), pcmStream);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error converting mp3 to wav.", "CONVERSION ERROR");
        }
    }

1 个答案:

答案 0 :(得分:0)

MP3是一种有损编解码器,因此它不会解压缩到您编码的完全相同的音频。它也可以通过创建一系列编码的“帧”来工作,每个帧都有固定的长度,因此解码的MP3通常与输入的持续时间不完全相同,但延长几毫秒。