Есть вот такой вот код написанный с использование сокетов и NAudio
public void BeginReceive()
{
Thread ReceiveVoiceFromChatThread = new Thread(()=>
{
while (true)
{
try
{
byte[] ReceivedVoiceDataLenght = new byte[4];
VoiceSocket.Receive(ReceivedVoiceDataLenght);
byte[] ReceivedVoiceData = new byte[BitConverter.ToInt32(ReceivedVoiceDataLenght)];
VoiceSocket.Receive(ReceivedVoiceData);
new Thread(() =>
{
try
{
IWaveProvider provider = new RawSourceWaveStream(new MemoryStream(ReceivedVoiceData), new WaveFormat(44100, 1));
WaveOut _waveOut = new();
_waveOut.Init(provider);
_waveOut.Play();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}).Start();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
});
ReceiveVoiceFromChatThread.Start();
}
Знаю, код очень кривой, и должен работать не так как надо. Но он не работает в принципе, каждые 40 миллисекунд туда поступает массив байт с сокета, но почему то звук не проигрывается.
P.S. Используется TCP сокет (тоже не лучший выбор).