【问题标题】:Got a frame at sample rate 44100, in an MP3 with sample rate 48000. Mp3FileReader does not support sample rate changes在采样率为 48000 的 MP3 中获得了采样率为 44100 的帧。Mp3FileReader 不支持采样率更改
【发布时间】:2015-10-05 20:00:54
【问题描述】:

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

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

【问题讨论】:

标签: c# wpf sqlite naudio


【解决方案1】:

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

【讨论】:

  • 有什么方法可以将 Wav 文件转换为 Mp3?所以我应该使用 Mp3FileReader 因为在我的数据库中所有文件都是 Mp3 文件。谢谢
  • 或者可以录制mp3文件吗?
  • 我倾向于使用 LAME.exe 将 WAV 转换为 MP3。如果您使用的是 Win 8,则可以使用 MediaFoundationEncoder 来代替
【解决方案2】:

我也和你一样收到了这个异常消息。我是这样解决的:

MediaFoundationReader readers = new MediaFoundationReader(filepath);

而不是

Mp3FileReader readers = new Mp3FileReader(filepath);

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

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多