Сохранение WMA в NAudio

Я пытаюсь преобразовать файл WAV в файл WMA с помощью NAudio. Мне удалось заставить его частично работать, но последние несколько секунд звукового эффекта обрываются.

WaveFileReader wr = new WaveFileReader(@"C:\mywav.wav");
WmaWriter ww = new WmaWriter(new FileStream(@"C:\mywma.wma",FileMode.Create),new WaveFormat(44100,2),profile);

byte[] buff = null;

int read = 0;

buff=new byte[wr.Length];
read = wr.Read(buff,0,buff.Length);
while ((read > 0))
{
  ww.Write(buff,0,read);
  read = wr.Read(buff,0,buff.Length);
}

Это только частично записывает файл WMA, а не весь файл WAV, который читается. В качестве альтернативы есть способ конвертировать в WMA без необходимости использования NAudio в С#?


person TryNCode    schedule 08.05.2012    source источник
comment
Возможно, это связано с буферизацией и неправильной утилизацией. Если WmaWriter позволяет, добавьте Flush() и Close() в конце. В качестве альтернативы используйте блок using вокруг модуля записи, чтобы убедиться, что он расположен правильно. Вам могут понадобиться оба.   -  person yamen    schedule 09.05.2012
comment
Я работал над этим весь день, и это был необходимый блок «использования». Большое спасибо! Пожалуйста, опубликуйте это как ответ, и я приму.   -  person TryNCode    schedule 09.05.2012


Ответы (1)


Как обсуждалось в комментариях, используйте блок using с модулем записи (и на самом деле для чтения), чтобы потоки очищались и закрывались должным образом.

person yamen    schedule 08.05.2012