我有一个关于混合多个 PCM 样本的简单问题。
我读到混合多个音频 PCM 样本的最佳方法是取每帧样本的平均值。
因此,如果我在除以 5 之前将 5 个 16 位样本相加,显然很有可能它的值会大于 16 位 Short 所能容纳的值。
因此,当将多个 16 位样本混合在一起时,我是否首先将它们全部存储在 int 中,然后将它们相加并求平均值,然后再转换回短整型?
如果您想混合音频样本,只需将它们添加在一起即可。建立平均值并不是正确的方法。
想一想:如果有人拉小提琴,第二把小提琴加入音乐,第一把小提琴的声音会变得小吗?不,不会的。第二把小提琴只是增加了信号。
添加 PCM 样本时,您必须处理整数溢出问题。一种方法是拥有一个应用于混合 PCM 样本的全局“主音量”。使用这样的全局乘法器可以帮助您确保最终信号大部分在输出数据的 16 位范围内。
您可能还需要每个通道的音量控制。
最终,溢出仍然会时不时地发生,处理它们的最佳方法是将输出值限制为 16 位输出流的最大和最小可表示值。耳朵会容忍这种情况,只要不经常发生,就不会被注意到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)