【问题标题】:Routing Audio from microphone to network using QT 6.4.x使用 QT 6.4.x 将音频从麦克风路由到网络
【发布时间】:2023-02-18 22:09:09
【问题描述】:

使用 QT 6.4.x (Windows),我如何捕获麦克风音频并重新打包并将重新打包的音频转发到 QUdpSocket。

重新打包将涉及将捕获的音频格式从其典型的 16 位小端格式更改为 24 位大端格式,其中每个数据包将具有恒定大小,可能与来自麦克风的有效负载不同。我不确定,但不知何故我认为我需要用 QAudioDecoder 替换 QAudioSink,如描述所示:QAudioDecoder 类是用于解码音频媒体文件的高级类。它类似于 QMediaPlayer 类,只是音频是通过此 API 提供回来的,而不是直接路由到音频硬件。

我有一个部分工作的示例,其中包含将合成音频直接发送到扬声器的混合。此功能基于 Qt 6 附带的“音频输出示例”(我的修改示例向扬声器发送正弦波生成的音调)。

同样在这个 RtpWorker 线程中,使用“音频源示例”作为灵感,我也能够从麦克风捕获和拦截音频数据包,但我不知道如何将这些数据包(按上述重新打包)发送到 UDP 套接字在固定大小的数据报中,我只是记录捕获的数据包。我想我需要一个中间循环缓冲区(其中的写入部分用捕获的麦克风音频填充它,而读取部分在拉模式下由 QAudioSinkQAudioDecoder 调用)。

根据我上面的评论,我认为我可能需要将它们发送到 QAudioDevice 以便我可以自己处理打包和通过网络发送。

我的代码包含在以下QTBUG-108383 的 2 个附件中。

如果有人能指出一些有用的例子来尝试做类似的事情,那就太好了。

【问题讨论】:

    标签: c++ qt6 qtmultimedia


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      相关资源
      最近更新 更多