c++ 使用QT 6.4.x将音频从麦克风路由到网络

lzfw57am  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(169)

使用QT 6.4.x(Windows),如何捕获麦克风音频并将其重新打包,然后将重新打包的音频转发到QUdpSocket。
重新打包将涉及改变捕获的音频格式从其典型的16位小端格式,并转换为24位大端格式,其中每个数据包将有一个恒定的大小,可能不同大小的有效载荷,从麦克风。我不确定,但不知何故,我认为我需要更换QAudioSink与QAudioDecoder的描述表明:QAudioDecoder类是用于解码音频媒体文件的高级类。它类似于QMediaPlayer类,不同之处在于音频是通过此API返回提供的,而不是直接路由到音频硬件。
我有一个部分工作的示例,包含直接向扬声器发送合成音频的混合。此功能基于Qt 6附带的“音频输出示例”(我修改的示例向扬声器发送正弦波生成的音调)。
同样在这个RtpWorker线程中,我使用“音频源示例”作为灵感,还能够捕获和拦截来自麦克风的音频包,但我不知道如何发送这些包(按照上述重新打包)以固定大小的数据报发送到UDP套接字,相反,我只是记录捕获的数据包。我想我需要一个中间循环缓冲区(其写入部分使用捕获的麦克风音频填充,而读取部分由拉取模式下的QAudioSinkQAudioDecoder调用)。
根据我上面的评论,我想我可能需要把它们发送到一个QAudioDevice,这样我就可以自己处理打包和通过网络发送。
我的代码包含在2附件在下面的QTBUG-108383
如果有人能指出一些尝试做类似事情的有用例子,那就太好了。

9gm1akwq

9gm1akwq1#

尝试运行Mac OS或Linux,似乎是Windows错误

相关问题