Member 10005477 Ответов: 1

Использование NAudio для передачи голоса по сети


Привет ребята

Я использую библиотеку NAudio для передачи голоса по сети, то есть с моего микрофона на любые другие удаленные динамики ПК, для этого мне нужна некоторая помощь.я использовал библиотеку Naudio для записи голоса с микрофона и хранения его, но теперь, когда я пытаюсь отправить его по сети, у меня возникают проблемы. Я использую следующий код(сторона отправителя), но он дает мне исключение, что Wavein должен записывать в фоновом потоке, почему это так ??


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication2
{
    class Program
    {
        private NAudio.Wave.WaveIn sourcestream = null;
        private NAudio.Wave.DirectSoundOut waveOut = null;
        private NAudio.Wave.WaveFileWriter Wavewriter = null;
        
        static void Main(string[] args)
        {
            Program obj = new Program();
            obj.function();
            
        }
        void function()
        {
            Thread t = new Thread(new ThreadStart(Service));
            t.IsBackground = true;
            t.Start();
            //Thread t2 = new Thread(new ThreadStart(Service2));
            //t2.Start();


        }

            void Service()
            {
                sourcestream = new NAudio.Wave.WaveIn();
                
                while(true)
                {
            
            int devicenumber = 0;
            
            sourcestream.DeviceNumber = devicenumber;

            sourcestream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(devicenumber).Channels);
                  
            sourcestream.DataAvailable += new EventHandler<naudio.wave.waveineventargs>(sourcestream_DataAvailable);
            //Wavewriter = new NAudio.Wave.WaveFileWriter(save.FileName,sourcestream.WaveFormat);

            
            }
            }
            //void Service2 { 
            //}

            private void sourcestream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e )
            {
                sourcestream.StartRecording();
                byte[] buffer = e.Buffer;
                Console.WriteLine(buffer);               

            }
        }
    }

Member 13001256

Вы решили свою проблему?
У меня такая же проблема, как и у тебя.
Если вы решили эту проблему, пожалуйста, помогите мне.

1 Ответов

Рейтинг:
2

Member 14086051

добавить закрытую переменную для

sourcestream 


поставить блок инициализации в Main функции
sourcestream = new NAudio.Wave.WaveIn();

и другие настройки

удалить цикл while

путь к этой нити
Service
функция
sourcestream.StartRecording();