0

私が現在行っているのは、記録中にデータ受信イベントからバイトを取得し、バイトをコーデックでエンコードすることです。現在使用するように設定したコーデックは、ALaw、G722、GSM などです ( NetworkChatDemo のよう)

記録を開始するために使用されるコード

    If waveIn Is Nothing Then
        waveIn = New WaveIn
        waveIn.DeviceNumber = 0
        waveIn.BufferMilliseconds = 100
        waveIn.WaveFormat = codec.RecordFormat
        waveIn.StartRecording()
    End If

記録されたバイトを操作するために使用されるコード

Private Sub OnDataAvailable(ByVal sender As Object, ByVal e As WaveInEventArgs) Handles waveIn.DataAvailable
    Dim encoded As Byte() = codec.Encode(e.Buffer, 0, e.BytesRecorded)
    ...
    //Send encoded audio over UdpClient
End Sub

これは私にとってはうまく機能していますが、AAC 形式のサポートを追加したいと考えています。MediaFoundationEncoder.EncodeToAac(...)したがって、上記の DataReceived イベントと同じ結果、UDP 経由で送信できるエンコードされた AAC オーディオのバイト配列、または NAudio 内で認識していない別のクラス/関数と同じ結果を達成したいと考えています。私が知る限り、MediaFoundationEncoder.EncodeToAac(...)オーディオのみをファイルにエンコードし、バイト配列にはエンコードしません。また、バイト配列をパラメーターとして受け入れません。私が望むものを達成する方法はありますか、それとも NAudio では AAC ファイルが完全に記録されて保存された後にしか作業できませんか?

4

1 に答える 1

3

はい、Corey が言うように、これは 1.7 の NAudio に新たに追加されたものであり、ストリームへのエンコードのサポートを追加することは、私が将来確実に追加したいものです。

下位レベルでの作業を気にしない場合は、派生クラスを作成する MFT として AAC エンコーダーを構築することを試みることができます(これを行う方法の例として、MediaFoundationTransformを参照してください。MediaFoundationResampler

于 2013-10-28T10:03:29.367 に答える