我正在用C ++编写WAVE解码器/编码器。我已经成功地在不同的样本大小(8,16和32)之间进行了正确的转换,但是我需要一些关于频道和频率的帮助。
渠道:
如果我想从立体声转换为单声道:
如果我想从单声道转换为立体声: (我知道这不是很科学)
采样率:
如何更改采样率(重采样),例如:从44100 Hz到22050 Hz:
答案 0 :(得分:1)
立体声到单声道 - 取左右样本的平均值,即M = (L + R) / 2
- 这适用于绝大多数立体声内容,但请注意,在某些罕见情况下您可以离开/正确的取消。
单声道到立体声 - 将单声道样本放入左右声道,即L = R = M
- 这会产生一个声音图像,当播放为立体声时居中
重新采样 - 对于简单的整数比率下采样,如上例所示,过程为:
请注意,在一般情况下,有libsamplerate等第三方库可以为您处理重新采样,因此如果您需要支持多个比率,或者您有一些棘手的非整数比率那么这可能是一种更好的方法