2014-12-08 5 views
-1

Я использую проект NAudio 1.72 для записи новых аудиофайлов и редактирования существующих wav-файлов. Я заметил, что всякий раз, когда я открываю wav-файл 172 Кбит/с и записываю часть файла, воспроизведение звучит как бурундук.Почему мой перезаписанный аудиофайл воспроизводится с голосом бурундука?

Вновь записанные файлы wav показывают скорость передачи данных 128 кбит/с. И я не нашел проблему с бурундуком с файлами wav со скоростью 128 Кбит/с. Кто-нибудь думает, что это проблема, потому что скорость передачи данных не соответствует?

Как это разрешить?

Обратите внимание: я кодирую на C#, используйте ссылку на проект NAudio для записи и редактирования wav-файлов. Я использую WPF mediaelement для воспроизведения любого wav-файла.

ответ

-1

Ну, после небольшого исследования я нашел это несколько полезным. Тем не менее, я боюсь, что у меня есть проблемы с регрессией. Все еще работа над улучшением стратегии ниже.

Несмотря на то, что ниже метод преобразует wav-файл 176 кбит/с в 128 Кбит/с и хорошо воспроизводится, приложение выходит из строя.

private string OpenMedia(string filename) 
    { 
     using (var reader = new WaveFileReader(filename)) 
     { 
      int bitrate = reader.WaveFormat.AverageBytesPerSecond * 8; 
      if (bitrate > 128000) 
      { 
       MessageBox.Show("This wav file has a bit rate higher than 128 kbps : " + 

    bitrate); 

       int channel = reader.WaveFormat.Channels; 
       if (channel > 1) 
       { 
        MessageBox.Show("This wav file was not created in Mono channel : " + 

    channel); 
       } 
       int samplerate = reader.WaveFormat.SampleRate; 
       if (samplerate > 8000) 
       { 
        MessageBox.Show("This wav file has a sample rate > 8000 : " + samplerate); 
        var newFormat = new WaveFormat(8000, 16, 1); 
        using (var conversionStream = new WaveFormatConversionStream(newFormat, 

    reader)) 
        { 
         WaveFileWriter.CreateWaveFile(filename, conversionStream); 
        } 
       } 
      } 
     } 
     return filename; 
    }