-1

RTP マルチキャスト プロトコルを使用してボイス チャットを行う必要があるため、スピーカーとマイクを処理してユーザー サウンドを取得し、ネットワーク経由で送信できる C# dll ライブラリが必要です。C# を使用した簡単な例で、シンプルで非常にシンプルなライブラリであることをお勧めします。

4

1 に答える 1

0

NAudio.dll ライブラリを使用すると、次のコードで C# を使用してマイクとスピーカーを処理できます。 1- このコードはマイク デバイスを提供します。

        List<NAudio.Wave.WaveInCapabilities> sources = new List<NAudio.Wave.WaveInCapabilities>();
        for (int i = 0; i < NAudio.Wave.WaveIn.DeviceCount; i++)
        {
            sources.Add(NAudio.Wave.WaveIn.GetCapabilities(i));
        }
        sourceListView.Items.Clear();

        foreach (var source in sources)
        {
            ListViewItem item = new ListViewItem(source.ProductName);
            item.SubItems.Add(new ListViewItem.ListViewSubItem(item, source.Channels.ToString()));
            sourceListView.Items.Add(item);
        }

2- このコードは、マイクからオーディオのキャプチャを開始し、スピーカーに出力します。

    private NAudio.Wave.WaveIn sourceStream = null;
    private NAudio.Wave.DirectSoundOut waveOut = null;

    private void btnStart_Click(object sender, EventArgs e)
    {
        if (sourceListView.SelectedItems.Count == 0) return;
        //NAudio.Wave.MixingWaveProvider32 mixer=sourceStream.GetMixerLine();
        int deviceNumber = sourceListView.SelectedItems[0].Index;
        sourceStream = new NAudio.Wave.WaveIn();
        sourceStream.DeviceNumber = deviceNumber;
        sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(9600,8, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);
        NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream);
        waveOut = new NAudio.Wave.DirectSoundOut();
        waveOut.Init(waveIn);
        sourceStream.StartRecording();
        sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(sourceStream_DataAvailable);
        waveOut.Play();
    }

    void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
    {

    }

    private void btnStop_Click(object sender, EventArgs e)
    {
        if (waveOut != null)
        {
            waveOut.Stop();
            waveOut.Dispose();
            waveOut = null;
        }
        if (sourceStream != null)
        {
            sourceStream.StopRecording();
            sourceStream.Dispose();
            sourceStream = null;
        }
    }

これは、この問題を解決するための非常に簡単な例です。NAudio.dll ライブラリは、次の Web サイトからダウンロードできます: http://naudio.codeplex.com/releases/view/79035

于 2013-05-30T08:23:09.817 に答える