我正在尝试加入wav-sound的字节数组,除了backgroundnoise之外它还可以。任何人都知道添加两个字节数组的声音的任何算法。
这是我到目前为止所尝试的
for(int i=0;i<bArr1.length;i++)
{
bArrJoined[i]=bArr1[i] + bArr2[i];
}
也试图除以2而不是高数
for(int i=0;i<bArr1.length;i++)
{
bArrJoined[i]=(bArr1[i] + bArr2[i]) / 2;
}
任何人都知道如何在没有噪音的情况下完成这项工作?
答案 0 :(得分:0)
这里有很多东西可能会造成瑕疵。不同的音频采样率或数据位大小都可以做到。
假设这些是非问题,您应该知道您不能在没有溢出的情况下添加byte
与另一个byte
(256将变为0等)。因此,在添加之前转换为int
。如果超过最大音量,将发生剪辑,因此除以2操作是明智的,应该停止该问题。除法操作应该与int
版本一起进行。最后只回到byte
。
但是,如果您不使用8位音频,则byte
不是您的原子单位。例如,16位音频使用2个字节,在对值执行任何数学运算之前,您需要将每两个连续bytes
转换为int
(相对于正确的字节顺序)。 32位音频数据占用每个单个数值的4个连续字节。只有一个字节数组本身并不能告诉你数据边界在哪里。