Я впервые использую 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 не поддерживает изменение частоты дискретизации.
Может кто-нибудь сказать мне, где я делаю неправильно, пожалуйста. Я нашел несколько вопросов, но они мне не помогли. Извините, если есть повторяющийся вопрос. Спасибо