转换Mp3到WAV与naudio没有写入磁盘.(仅限流)
本文关键字:磁盘 Mp3 WAV naudio 转换 | 更新日期: 2023-09-27 18:08:54
我想把mp3文件转换成WAV。在举。DirectSound辅助缓冲区只支持WAV。我正在使用naudio转换文件,这工作得很好。
using (Mp3FileReader reader = new Mp3FileReader(mp3File))
{
WaveFileWriter.CreateWaveFile(outputFile, reader);
}
问题是我不能在磁盘上保存文件,所以我必须使用它们与流。
Mp3FileReader mp3reader = new Mp3FileReader(filenamePathMp3);
var stream=WaveFormatConversionStream.CreatePcmStream(mp3reader);
引发异常值的不在预期范围内。我怎么能使一个流与音频转换为WAV或原始音频的secondaryBuffer没有写入磁盘?
提前感谢,
WaveFileWriter
可以写入Stream
而不是文件,因此您可以传入MemoryStream
。此外,Mp3FileReader.Read
已经返回PCM,因此您可以读入byte[]
,然后如果您愿意,将其插入到内存流中。
通过使用MemoryStream
和WaveFileWriter.WriteWavFileToStream
,我已经实现了将MP3转换为WAV而无需将其写入磁盘你也可以设置sampleRate比特率和通道使用RawSourceWaveStream
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();
}
}
}