2016-12-28 2 views
0

Я знаю, что NAudio.UWP - это работа, но самая новая версия (1.8), похоже, имеет возможность писать .wav.NAudio.UWP Запись, запись .wav

private IWavePlayer player; 
    private WaveStream reader; 
    private IWaveIn recorder; 
    private MemoryStream recordStream; 
    private IRandomAccessStream selectedStream; 

    private void Record() 
    { 
     if (recorder == null) 
     { 
      recorder = new WasapiCaptureRT(); 

      recorder.RecordingStopped += RecorderOnRecordingStopped; 
      recorder.DataAvailable += RecorderOnDataAvailable;    
     } 

     if (reader != null) 
     { 
      reader.Dispose(); 
      reader = null; 
     } 

     recorder.StartRecording(); 

    } 

private async void RecorderOnDataAvailable(object sender, WaveInEventArgs waveInEventArgs) 
    { 
     Debug.WriteLine(waveInEventArgs.BytesRecorded); 
     if (reader == null) 
     { 
      recordStream = new MemoryStream(); 
      reader = new RawSourceWaveStream(recordStream, recorder.WaveFormat);     
     }  

     await recordStream.WriteAsync(waveInEventArgs.Buffer, 0, waveInEventArgs.BytesRecorded);      
    } 

Где/Как вы создаете имя файла хранилища, путь и т. Д.? Параметр назначения не существует ... Это единственный код, который пришел с примером.

** Отметьте, если вы видите, что этот Chrome блокирует загрузку кода 1.8.

ответ

0

Где/Как вы создаете имя файла хранилища, путь и т. Д.?

Это действительно зависит от ваших требований. Например, вы можете использовать фиксированное имя и временную метку для названия вашего аудиофайла.

var file = KnownFolders.MusicLibrary.CreateFileAsync("song"+DateTime.Now.ToString("yyyy-MM-DD-hh-mm-ss")+".wav",CreationCollisionOption.GenerateUniqueName); 
+0

Я знаю, как создать файл хранилища. Как этот файл получает «инициализацию» для wavewriter. – cablehead

0

Вы можете скопировать записи потока в новый файловый поток. Например:

var file = await KnownFolders.MusicLibrary.CreateFileAsync("test.wav"); 
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
{ 
     recordStream.CopyTo(stream.AsStream()); 
} 
+0

Я бы предпочел использовать новый WaveFileWriterRT, я попробую. – cablehead

+0

У меня получился волновой волк. Ваш метод и писатель создают потрясающий, изменчивый и быстрый результат. – cablehead