C ++从麦克风流式传输音频

时间:2014-08-29 21:42:27

标签: c++ audio chat voice

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

Edit Client是Windows,Server是Linux

1 个答案:

答案 0 :(得分:3)

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

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