使用 SoX 从命令行使用“sox -m ...”混合音频文件很简单,但我试图用 C 库找到完全相同的东西,但我无法在任何地方找到如何做到这一点。甚至可能吗?
问问题
2191 次
1 回答
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,你可以用它来做文件输入/输出,但是混音需要你自己做。
于 2012-08-24T12:37:43.507 回答