这篇文章主要是一个应用,使用udp传送语音和文本等信息。在这个系统中没有服务端和客户端,相互通讯都是直接相互联系的,能够很好的实现效果。
语音获取
要想发送语音信息,首先得获取语音,这里有几种方法,一种是使用DirectX的DirectXsound来录音,我为了简便使用一个开源的插件NAudio来实现语音录取。 在项目中引用NAudio.dll
- //------------------录音相关----------------------------- private IWaveIn waveIn;
- private WaveFileWriter writer;
- private void LoadWasapiDevicesCombo() {
- var deviceEnum = new MMDeviceEnumerator(); var devices = deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToList();
- comboBox1.DataSource = devices; comboBox1.DisplayMember = "FriendlyName";
- } private void CreateWaveInDevice()
- {
- waveIn = new WaveIn(); waveIn.WaveFormat = new WaveFormat(8000, 1);
- waveIn.DataAvailable += OnDataAvailable; waveIn.RecordingStopped += OnRecordingStopped;
- } void OnDataAvailable(object sender, WaveInEventArgs e)
- { if (this.InvokeRequired)
- { this.BeginInvoke(new EventHandler<WaveInEventArgs>(OnDataAvailable), sender, e);
- } else
- { writer.Write(e.Buffer, 0, e.BytesRecorded);
- int secondsRecorded = (int)(writer.Length / writer.WaveFormat.AverageBytesPerSecond); if (secondsRecorded >= 10)//最大10s
- { StopRecord();
- } else
- { l_sound.Text = secondsRecorded + " s";
- } }
- } void OnRecordingStopped(object sender, StoppedEventArgs e)
- { if (InvokeRequired)
- { BeginInvoke(new EventHandler<StoppedEventArgs>(OnRecordingStopped), sender, e);










