我第一次在我的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抛出一个异常:在采样率为44100的MP3中得到一帧,采样率为48000.Mp3FileReader不支持采样率变化。
请有人告诉我,我做错了。 我发现了一些问题,但他们并没有帮助我。对不起如果有任何重复的问题。 感谢
答案 0 :(得分:2)
您已保存了WAV文件,而不是MP3文件,因此您需要使用WaveFileReader
代替Mp3FileReader
才能播放。
答案 1 :(得分:0)
我也和您一样收到此异常消息。我这样解决了:
packageA
代替
if let firstTabVc = tabBarController?.viewControllers.first {
//you have vc here
}
当我使用MediaFoundationReader时,没有收到该异常消息。