在采样率为 48000 的 MP3 中获得采样率为 44100 的帧。Mp3FileReader 不支持采样率更改
Got a frame at sample rate 44100, in an MP3 with sample rate 48000. Mp3FileReader does not support sample rate changes
我第一次在我的 Wpf 应用程序中使用 NAudio。
步骤:
1) 使用 NAudio (C#, Wpf) 录制到 MemoryStream。这是我的录音代码:
public void StartRecording()
{
this.waveSource = new WaveIn();
if (Stream == null)
{
Stream = new MemoryStream();
}
waveSource.WaveFormat = new WaveFormat(44100, 2);
this.waveFile = new WaveFileWriter(this.Stream, this.waveSource.WaveFormat);
this.waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
this.waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
this.waveSource.StartRecording();
}
private void waveSource_DataAvailable(object sender, WaveInEventArgs e)
{
if (waveFile != null)
{
waveFile.Write(e.Buffer, 0, e.BytesRecorded);
int secondsRecorded = (int)(waveFile.Length / waveFile.WaveFormat.AverageBytesPerSecond);
waveFile.Flush();
}
}
private void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
{
if (waveSource != null)
{
waveSource.Dispose();
waveSource = null;
}
if (waveFile != null)
{
waveFile.Dispose();
waveFile = null;
}
}
2) 停止后,我将记录流数组 (MemoryStream.ToArray()) 插入数据库 (SQLite)。
3) 从数据库获取并将其转换为流来播放:
Stream stream = new MemoryStream(bytes);
var mp3Reader = new Mp3FileReader(stream);
Mp3FileReader 抛出异常:在采样率为 48000 的 MP3 中获得采样率为 44100 的帧。Mp3FileReader 不支持采样率更改。
有人能告诉我哪里做错了吗?
我发现了一些问题,但他们没有帮助我。对不起,如果有任何重复的问题。
谢谢
您保存的是 WAV 文件,而不是 MP3 文件,因此您需要使用 WaveFileReader
而不是 Mp3FileReader
才能播放它。
我也和你一样收到了这条异常消息。我是这样解决的:
MediaFoundationReader readers = new MediaFoundationReader(filepath);
而不是
Mp3FileReader readers = new Mp3FileReader(filepath);
当我使用 MediaFoundationReader 时,我没有收到异常消息。
我第一次在我的 Wpf 应用程序中使用 NAudio。
步骤: 1) 使用 NAudio (C#, Wpf) 录制到 MemoryStream。这是我的录音代码:
public void StartRecording()
{
this.waveSource = new WaveIn();
if (Stream == null)
{
Stream = new MemoryStream();
}
waveSource.WaveFormat = new WaveFormat(44100, 2);
this.waveFile = new WaveFileWriter(this.Stream, this.waveSource.WaveFormat);
this.waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
this.waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
this.waveSource.StartRecording();
}
private void waveSource_DataAvailable(object sender, WaveInEventArgs e)
{
if (waveFile != null)
{
waveFile.Write(e.Buffer, 0, e.BytesRecorded);
int secondsRecorded = (int)(waveFile.Length / waveFile.WaveFormat.AverageBytesPerSecond);
waveFile.Flush();
}
}
private void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
{
if (waveSource != null)
{
waveSource.Dispose();
waveSource = null;
}
if (waveFile != null)
{
waveFile.Dispose();
waveFile = null;
}
}
2) 停止后,我将记录流数组 (MemoryStream.ToArray()) 插入数据库 (SQLite)。
3) 从数据库获取并将其转换为流来播放:
Stream stream = new MemoryStream(bytes);
var mp3Reader = new Mp3FileReader(stream);
Mp3FileReader 抛出异常:在采样率为 48000 的 MP3 中获得采样率为 44100 的帧。Mp3FileReader 不支持采样率更改。
有人能告诉我哪里做错了吗? 我发现了一些问题,但他们没有帮助我。对不起,如果有任何重复的问题。 谢谢
您保存的是 WAV 文件,而不是 MP3 文件,因此您需要使用 WaveFileReader
而不是 Mp3FileReader
才能播放它。
我也和你一样收到了这条异常消息。我是这样解决的:
MediaFoundationReader readers = new MediaFoundationReader(filepath);
而不是
Mp3FileReader readers = new Mp3FileReader(filepath);
当我使用 MediaFoundationReader 时,我没有收到异常消息。