我正在尝试使用sox库在两个音频文件之间进行格式转换。我可以将一个转换为另一个,而不会通过库提供的API更改参数。就像执行命令的过程一样: sox a.wav b.ul 现在我遇到的问题是如何在转换音频文件时更改采样率。请帮我一把!谢谢!
答案 0 :(得分:0)
rate
效果用于重新取样。有关如何将其与库API一起使用的示例,请参阅SoX git存储库中的src/example3.c。 (你应该确保使用当前git中的example3.c,因为最近发布的版本是错误的。)
答案 1 :(得分:0)
非常感谢。在阅读examples3.c和一些测试后,我找到了解决问题的方法。要在转换时更改采样率,只需在转换代码中添加两个步骤:
......
out->signal.channels = 1 //change the channel of outfile to 1
......
//add the effect of "rate", which means samples rates
e = sox_create_effect(sox_find_effect("rate"));
args[0] = "8000", assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
assert(sox_add_effect(chain, e, &in->signal, &out->signal) == SOX_SUCCESS);
free(e);
......
我通过这种方式成功更改了采样率。改变渠道也是如此。 希望它可以帮助别人。 再次感谢chirlu〜