2

オーディオの 3 ~ 4 ストリームを録音し、それらを個別の wav ファイルに書き込もうとしています。オーディオをキャプチャするために NAudio の asioOut を使用しています。最初は、3 チャンネルまたは 4 チャンネルの wav ファイルを書いていました。ここで質問を検索して、答えを見つけたと思ったのですが、まだわかりません。個別の wav ファイルを作成できるようになりましたが、各ファイルには複数のチャンネルが含まれています。

channel_1.wav --------> チャンネル 1 と 2 があります

channel_2.wav --------> チャンネル 1 と 3 があります

channel_3.wav --------> チャンネル 2 と 3 があります

GetAsInterleavedSamples()を解析しようとすると問題があると思います。

これは私の asioOut_AudioAvailable() です

    void asioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
    {     

        float[] samples = new float[2 * 44100 * GetUserSpecifiedChannelCount()];

        samples = e.GetAsInterleavedSamples();

        int offset = 0;
        while (offset < samples.Length)
        {
            for (int n = 0; n < this.writers.Length; n++)
            {
                this.writers[n].WriteSamples(samples, offset, 2);
                offset += 2;
            }
        }

    }

私はこれが初めてなので、ただ勉強しているだけです。どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

2

私の理解が正しければ、各ライターに 1 つのサンプルのみを書き込みたいので、 の 3 番目のパラメーターはWriteSamples1 で、オフセットは 1 ずつインクリメントする必要があります。バイト配列の 16 ビット オーディオ。

于 2012-12-29T08:05:52.383 に答える