我目前正在开发一个简单的 VoIP 项目,其中多个客户端将其语音发送到服务器,稍后服务器会将这些语音混合在一起。
但是,我无法使用简单的数学加法直接混合它。每个周期,客户端都会向混音器发送3584字节的语音数据。
下面是接收缓冲区中包含的值的片段:
BYTE buffer[3584];
[0] 0 unsigned char
[1] 192 'À' unsigned char
[2] 176 '°' unsigned char
[3] 61 '=' unsigned char
[4] 0 unsigned char
[5] 80 'P' unsigned char
[6] 172 '¬' unsigned char
[7] 61 '=' unsigned char
[8] 0 unsigned char
[9] 144 '' unsigned char
[10] 183 '·' unsigned char
[11] 61 '=' unsigned char
.
.
.
我不太确定缓冲区内的模式是如何从客户端以这种方式生成的,但我认为它可能是一种波形模式。现在假设我有另一个类似的数据,如何将声音混合在一起。
请帮忙。谢谢。
最佳答案
您需要查明您的 VoIP 系统是否使用压缩。可能是这样,在这种情况下,您需要做的第一件事就是解压缩流,然后混合它们,然后重新压缩。
关于c++ - 如何混合语音音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772224/