Получил кадр с частотой дискретизации 44100, в MP3 с частотой дискретизации 48000. Mp3FileReader не поддерживает изменение частоты дискретизации

Я впервые использую NAudio в своем приложении Wpf.

Шаги: 1) Запись в MemoryStream с помощью NAudio (C#, Wpf). Это мой код записи:

 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 не поддерживает изменение частоты дискретизации.

Может кто-нибудь сказать мне, где я делаю неправильно, пожалуйста. Я нашел несколько вопросов, но они мне не помогли. Извините, если есть повторяющийся вопрос. Спасибо


person Ahror Kayumov    schedule 16.07.2015    source источник
comment
Это может быть полезно: посмотрите на эту ссылку: codeproject.com/Tips/ 56882/MP-Инструмент для записи звука   -  person Dilshod    schedule 18.07.2015


Ответы (2)


Вы сохранили файл WAV, а не файл MP3, поэтому вам нужно использовать WaveFileReader вместо Mp3FileReader, чтобы воспроизвести его.

person Mark Heath    schedule 17.07.2015
comment
Есть ли способ конвертировать файл Wav в Mp3? Поэтому я должен использовать Mp3FileReader, потому что в моей базе данных все файлы являются файлами Mp3. Спасибо - person Ahror Kayumov; 18.07.2015
comment
Или есть возможность записать мп3 файл? - person Ahror Kayumov; 18.07.2015
comment
Я обычно использую LAME.exe для преобразования WAV в MP3. Если вы используете Win 8, вы можете сделать это с помощью MediaFoundationEncoder. - person Mark Heath; 19.07.2015

Я также получил это сообщение об исключении, как и вы. Я решил так:

MediaFoundationReader readers = new MediaFoundationReader(filepath);

вместо

Mp3FileReader readers = new Mp3FileReader(filepath);

Когда я использую MediaFoundationReader, я не получаю это сообщение об исключении.

person hcMhmt    schedule 22.07.2020