【发布时间】:2011-04-24 17:55:48
【问题描述】:
我目前正在开发一个简单的 VoIP 项目,其中多个客户端将他的声音发送到服务器,然后服务器会将这些声音混合在一起。
但是,我不能使用简单的数学加法直接混合它。每个周期,客户端会向混音器发送 3584 字节的语音数据。
以下是接收缓冲区中包含的值的 sn-p:
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
.
.
.
我不太确定缓冲区内的模式是如何从客户端以这种方式生成的,但我认为它可能是波形模式。现在假设我有另一个类似的数据,我如何将声音混合在一起。
请帮忙。谢谢。
【问题讨论】:
-
您是否尝试过将简单数学加法的结果除以输入缓冲区的数量(算术平均值)?
-
@smerlin 我试过了,但我能听到的只是沉默。还有什么方法可以试试?
-
@Chicko Bueno:它应该适用于未压缩的 PCM 数据,可能是您的音频数据被 John Zwinck 指出的那样压缩。
-
@smerlin 据我所知,客户端提供未压缩的 PCM 数据。这让我很头疼。
-
@smerlin 无论如何,如果我有 3 个客户,你能不能给我一个简单的数学公式?也许我做错了。