@DerilH

Как сделать проигрывание полученного звука беспрерывно, как в голосовом чате?

Есть вот такой вот код написанный с использование сокетов и 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 сокет (тоже не лучший выбор).
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы