从 mp3 转换流创建波形流时接收 "Not a WAVE file - no RIFF header"
Receiving "Not a WAVE file - no RIFF header" when creating wave stream from mp3 conversion stream
我正在尝试使用 NAudio 将 mp3 转换为波形流。不幸的是,我在创建 wave reader.
时在第三行收到错误 Not a WAVE file - no RIFF header
var mp3Reader = new Mp3FileReader(mp3FileLocation);
var pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3Reader);
var waveReader = new WaveFileReader(pcmStream)
这些流不应该一起正常工作吗?我的目标是将多个 mp3 和 wav 组合成一个流,用于播放和保存到光盘(作为 wav)。
你不需要第二行和第三行。 Mp3FileReader
将为您转换为 PCM,您可以直接使用 WaveOutEvent
等播放器播放。要在磁盘上实际生成 WAV 文件,请将其传递到 WaveFileWriter.CreateWaveFile
using(var reader = new Mp3FileReader(mp3FileLocation))
{
WaveFileWriter.CreateWaveFile(reader);
}
我将以我从未使用过 NAudio 的说明作为序言。话虽如此,他们的 Github 网站上有 concatenating audio 的指南。
查看了 API,您不能直接使用 Mp3FileReader
,因为它没有实现 ISampleProvider
。但是,您可以改用AudioFileReader
。
假设您有一个 IEnumerable<string>
(又名 List
或数组)要加入的文件名 files
:
var sampleList = new List<ISampleProvider>();
foreach(string file in files)
{
sampleList.add(new AudioFileReader(file));
}
WaveFileWriter.CreateWaveFile16("outfilenamegoeshere.wav", new ConcatenatingSampleProvider(sampleList));
我正在尝试使用 NAudio 将 mp3 转换为波形流。不幸的是,我在创建 wave reader.
时在第三行收到错误Not a WAVE file - no RIFF header
var mp3Reader = new Mp3FileReader(mp3FileLocation);
var pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3Reader);
var waveReader = new WaveFileReader(pcmStream)
这些流不应该一起正常工作吗?我的目标是将多个 mp3 和 wav 组合成一个流,用于播放和保存到光盘(作为 wav)。
你不需要第二行和第三行。 Mp3FileReader
将为您转换为 PCM,您可以直接使用 WaveOutEvent
等播放器播放。要在磁盘上实际生成 WAV 文件,请将其传递到 WaveFileWriter.CreateWaveFile
using(var reader = new Mp3FileReader(mp3FileLocation))
{
WaveFileWriter.CreateWaveFile(reader);
}
我将以我从未使用过 NAudio 的说明作为序言。话虽如此,他们的 Github 网站上有 concatenating audio 的指南。
查看了 API,您不能直接使用 Mp3FileReader
,因为它没有实现 ISampleProvider
。但是,您可以改用AudioFileReader
。
假设您有一个 IEnumerable<string>
(又名 List
或数组)要加入的文件名 files
:
var sampleList = new List<ISampleProvider>();
foreach(string file in files)
{
sampleList.add(new AudioFileReader(file));
}
WaveFileWriter.CreateWaveFile16("outfilenamegoeshere.wav", new ConcatenatingSampleProvider(sampleList));