Witam. Chcę zbudować czat głosowy w oparciu o NAudio. Napisałem program nagrywający dźwięk.
using NAudio;
using NAudio.Wave;
using NAudio.CoreAudioApi;
using System;
using System.IO;
using System.Media;
using System.Threading;
namespace WavRecord
{
class Program
{
IWaveIn wi;
WaveFileWriter wfw;
static void Main(string[] args)
{
new Program().wi_StartRecording();
}
void stop()
{
wi.StopRecording();
}
void wi_StartRecording()
{
wi = new WaveIn(WaveCallbackInfo.FunctionCallback());
wi.DataAvailable += new EventHandler<WaveInEventArgs>(wi_DataAvailable);
wi.RecordingStopped += new EventHandler<StoppedEventArgs>(wi_RecordingStopped);
wi.WaveFormat = new WaveFormat(8000, 1);
wfw = new WaveFileWriter(@"record.wav", wi.WaveFormat);
wi.StartRecording();
Console.Read();
wfw.Dispose();
}
void wi_DataAvailable(object sender, WaveInEventArgs e)
{
wfw.Write(e.Buffer, 0, e.BytesRecorded);
}
void wi_RecordingStopped(object sender, EventArgs e)
{
wi.Dispose();
wfw.Close();
}
}
}
Sądzę, że najlepszym miejscem na wysyłanie jest metoda wi_DataAvailabe, gdyż możemy odczytać cały bufor jako gotową tablicę bajtów do wysłania. Tylko jak je odtworzyć? Próbowałem SoundPlayer'em, próbowałem zapisać do pliku *.wav, ale bez skutku. Wiem, że jest coś takiego jak BufferedWaveProvider, ale bardzo wiem jak on działa i nie udało mi się nic zrobić. Wie ktoś jak rozwiązać mój problem (odtworzenie dźwięku z tablicy bajtów)?