【问题标题】:Convert wav to mp3 and back to wav将 wav 转换为 mp3 并转换回 wav
【发布时间】:2017-08-23 06:40:55
【问题描述】:

我正在使用 LAME 的 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");
        }
    }

【问题讨论】:

  • WAV 是一种原始格式,因此可能不完全相同,但应该接近。您是否比较了原始和输出的比特率/频道/等,以确保在转换过程中没有发生任何变化?
  • 是的,两者之间的所有waveformat设置都相同。当我执行File.ReadAllBytes时,输出的wav文件字节数组比原来的要大得多。因此 mp3 转换为原始 wav 录音添加了额外的样本。
  • 如果输入和输出设置相等(比特率 = bitsPerSample * samplesPerSecond * 通道),除非原始文件已经是压缩格式,否则总文件大小必须相等(除非时间长度略有变化)。跨度>
  • 您可以尝试手动读取标题(如果 WaveFileReader 没有为您提供信息)以查看它是否以相同的方式存储。 soundfile.sapp.org/doc/WaveFormat
  • 当我比较从 ReadAllBytes 返回的字节数组时,数组值是相同的,但是解码后的 wav 文件最后有多余的字节。不过感谢您提供此信息!我是音频压缩和编码的新手,所以这对我来说是非常有价值的信息。

标签: c# winforms mp3 wav naudio


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 2017-07-06
    • 2013-01-17
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多