gpt4 book ai didi

c# - NAudio MediaFoundationRecorder EncodeToAAC字节数组而不是文件

转载 作者:行者123 更新时间:2023-12-03 00:09:49 25 4
gpt4 key购买 nike

我目前正在做的是在记录时从接收到的数据事件中获取字节,并使用编解码器对字节进行编码。我目前设置的编解码器是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格式的支持。因此,我想获得与上述DataReceived事件相同的结果,即经过编码的AAC音频的字节数组,可以通过udt从 MediaFoundationEncoder.EncodeToAac(...)或NAudio中未知的其他类/函数通过udp发送。据我所知, MediaFoundationEncoder.EncodeToAac(...)仅将音频编码为文件,而不是字节数组。它还不接受字节数组作为参数。有没有办法实现我想要的?或者NAudio仅在完全记录并保存AAC文件后才让我使用它吗?

最佳答案

是的,正如Corey所说,这是1.7中NAudio的新增功能,我肯定会在将来增加对Stream编码的支持。

如果您不介意在较低层次上工作,则可以尝试将AAC编码器构造为MFT,以从MediaFoundationTransform创建派生类(请参阅MediaFoundationResampler作为如何执行此操作的示例)。

关于c# - NAudio MediaFoundationRecorder EncodeToAAC字节数组而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19628531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com