【问题标题】:Convert Mp3 to WAV with naudio without writing on disk. (Stream only)使用 naudio 将 Mp3 转换为 WAV,无需写入磁盘。 (仅限流)
【发布时间】:2013-04-11 15:20:36
【问题描述】:

我想将 mp3 文件转换为 WAV。在 DirectX.DirectSound 中,辅助缓冲区仅支持 WAV。我正在使用 naudio 转换文件,这工作正常。

using (Mp3FileReader reader = new Mp3FileReader(mp3File))
{
    WaveFileWriter.CreateWaveFile(outputFile, reader);
}

问题是我无法将文件保存在磁盘上,所以我必须将它们与流一起使用。

 Mp3FileReader mp3reader = new Mp3FileReader(filenamePathMp3);
 var stream=WaveFormatConversionStream.CreatePcmStream(mp3reader);

抛出异常的值不在预期范围内。如何在不写入磁盘的情况下为secondaryBuffer制作音频转换为WAV或Raw音频的流?

提前谢谢你,

【问题讨论】:

    标签: c# mp3 wav naudio


    【解决方案1】:

    WaveFileWriter 可以写入Stream 而不是文件,因此您只需传入MemoryStream。此外,Mp3FileReader.Read 已经返回 PCM,因此您可以读取到 byte[],然后根据需要将其插入到您的内存流中。

    【讨论】:

    • 健康 这是我的代码,但我得到了同样的错误 ` long count;字节[] 信息;使用 (Mp3FileReader mp3reader = new Mp3FileReader(filenamePathMp3)) { count = mp3reader.Length;信息=新字节[计数]; mp3reader.Read(info, 0, (int)count); } MemoryStream memstream = new MemoryStream(info); foreGroundSound = new SecondaryBuffer(来源:memstream,desc:bufferDescription,父:sounddevice); ` 有什么想法吗?提前谢谢你。
    • Mp3FileReader.Read 将读取整个文件还是仅读取音频数据样本?我想做一个 FadeOut,我考虑将 byes 乘以某个值。那会奏效吗?我能从结果数组中生成新的 mp3 吗?
    【解决方案2】:

    我已经使用MemoryStreamWaveFileWriter.WriteWavFileToStream 实现了将 MP3 转换为 WAV 而无需将其写入磁盘 你也可以使用RawSourceWaveStream设置sampleRate比特率和频道

    public static byte[] ConvertMp3ToWav(byte[] mp3File)
    {
        using (var retMs = new MemoryStream())
        using (var ms = new MemoryStream(mp3File))
        using (Mp3FileReader reader = new Mp3FileReader(ms))
        {
            var rs = new RawSourceWaveStream(reader, new WaveFormat(16000, 1));
            using (WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(rs))
            {
                WaveFileWriter.WriteWavFileToStream(retMs,pcmStream);
                return retMs.ToArray();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 1970-01-01
      • 2017-07-03
      • 2021-08-15
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多