如何使用SoX C库混合音频文件

时间:2012-08-24 10:28:34

标签: c audio sox mixing

使用SoX从命令行使用“sox -m ...”混合音频文件很简单但是我试图找到与C库完全相同的东西,我无法找到如何做到这一点任何地方。它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

嗯,这是有可能的,但图书馆不会帮助你。

查看sox.c代码,您会注意到实际的混合代码位于static函数中:

for (ws = 0; ws < olen; ++ws) { /* wide samples */
  if (combine_method == sox_mix || combine_method == sox_mix_power) {
    for (s = 0; s < effp->in_signal.channels; ++s, ++p) { /* sum samples */
      *p = 0;
      for (i = 0; i < input_count; ++i)
        if (ws < z->ilen[i] && s < files[i]->ft->signal.channels) {
          /* Cast to double prevents integer overflow */
          double sample = *p + (double)z->ibuf[i][ws * files[i]->ft->signal.channels + s];
          *p = SOX_ROUND_CLIP_COUNT(sample, mixing_clips);
        }
    }
/* [...] */

所以,如果你真的想使用sox,你可以将它用于文件输入/输出,但你需要自己进行混音。