采样率为44100,采样率为48000的MP3格式.Mp3FileReader不支持采样率变化

时间:2015-07-16 11:39:18

标签: c# wpf sqlite naudio

我第一次在我的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不支持采样率变化。

请有人告诉我,我做错了。 我发现了一些问题,但他们并没有帮助我。对不起如果有任何重复的问题。 感谢

2 个答案:

答案 0 :(得分:2)

您已保存了WAV文件,而不是MP3文件,因此您需要使用WaveFileReader代替Mp3FileReader才能播放。

答案 1 :(得分:0)

我也和您一样收到此异常消息。我这样解决了:

packageA

代替

if let firstTabVc = tabBarController?.viewControllers.first {
   //you have vc here
}

当我使用MediaFoundationReader时,没有收到该异常消息。