我正在该服务器中编写一个客户端/服务器应用程序,发送实时音频数据,捕获从某些外部设备(例如麦克风)捕获的音频样本并将其发送到客户端。然后客户想要播放这些样本。我的应用程序将在本地网络上运行,所以我的带宽没有问题(我的声音是 8k,8bit 立体声,而我的网卡是 1000Mb)。在客户端中,我将数据缓冲一小段时间,然后开始播放。当数据从服务器到达时,我将它们发送到声卡。这似乎工作正常,但有一个问题:
当我在客户端的缓冲区完成时,我会遇到播放声音的间隙。
我认为这是因为服务器和客户端的采样时间不同,这意味着服务器上的 8K 与客户端上的 8K 不同。
我可以通过再次暂停客户端的播放和缓冲来解决这个问题,但我的老板不接受,因为我有适当的带宽,我应该能够播放声音而没有间隙或暂停。
所以我决定在客户端动态改变播放速度,但我不知道怎么做。
我在 Windows(本机)中编程,目前使用 waveOutXXX 播放声音。我可以使用任何其他本机库(DirectX/DirectSound、Jack 或 ...),但它们应该在客户端提供流畅的播放。
我已经用 waveOutXXX 编程了很多次,没有任何问题,我知道它很好,但我无法解决我的动态重采样问题