【问题标题】:C++ Streaming audio from microphone [closed]C ++从麦克风流式传输音频[关闭]
【发布时间】:2014-10-23 23:03:24
【问题描述】:

我有一个经典的 C++ 客户端-服务器环境。
现在我想在特定客户之间实现语音聊天。
我的问题是:如何在不“暂停”音频的情况下进行流式传输。我只对理论感兴趣。
我的第一个想法是每 0.5 秒捕获一些字节到缓冲区,然后将其发送到服务器,服务器将其重新发送给感兴趣的客户端。
但我不知道如何尽可能实时地做到这一点!

编辑客户端是 Windows,服务器是 Linux

【问题讨论】:

  • 这个问题的正确答案完全取决于您的操作系统。执行此操作的 Microsoft Windows 上运行的应用程序将与 Linux 上运行的应用程序完全不同。此处使用的操作系统必须指定。

标签: c++ audio chat voice


【解决方案1】:

您将选择一个编解码器并根据该编解码器指定的时钟速率进行流式传输。例如,G.711 编解码器指定时钟速率为 8000 Hz(意味着麦克风输入源每秒将被采样 8000 次)。它还指定(默认情况下)每个数据包应包含 20 毫秒的音频,因此在一秒钟内您将发送 50 个音频数据包(1 秒 = 1000 毫秒/每个数据包 20 毫秒 = 每秒 50 个数据包)。

在实现方面(实时),您将拥有一个具有“实时”优先级的单独线程,负责从麦克风采样音频,将其包装在 RTP 数据包中,并将该数据包发送到您的服务器。您的服务器同样会有一个单独的“实时”优先级线程,该线程将接收每个 RTP 数据包并将其转发给每个订阅的客户端。

【讨论】:

    猜你喜欢
    • 2014-12-20
    • 2018-07-29
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2021-05-12
    相关资源
    最近更新 更多