首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LibSoX混合两个wav文件

如何使用LibSoX混合两个wav文件
EN

Stack Overflow用户
提问于 2013-01-06 14:34:56
回答 2查看 1.7K关注 0票数 1

我试图混合两个wav文件使用LibSoX在Windows上。我可以通过使用以下命令从命令行中使用sox来实现这一点:

sox -m f1.sox f2.sox out.wav

但是,我希望使用C/C++函数并使用LibSoX进行编程。我已经成功地构建了LibSoX,并且已经尝试了不包含两个音频文件的示例程序。

之前有人这么做过吗?如果您可以提供一个代码片段或至少一些使用LibSoX调用来执行此操作的指针,那就太好了。

EN

回答 2

Stack Overflow用户

发布于 2013-01-07 14:15:00

想要分享解决方案(解决办法),我为上面的问题。基本上,混合不作为导出的函数调用公开。当然,混合可以通过命令行完成,因此可以有两种解决方案: 1)通过程序生成进程(sox.exe),2)通过libsox生成进程。我需要一个基于libsox的解决方案,作为调用混合函数的函数,不能生成一个进程(约束)。因此,我将主要功能从sox移到libsox中的一个新方法,我导出了:)。因此,现在我可以将相同的命令行开关传递给我的函数,并使用libsox完成工作!这将是一个理想的“解决方案”,直到Chris公开libsox的混合(和其他缺失的)功能。

票数 2
EN

Stack Overflow用户

发布于 2019-08-31 17:32:07

虽然这是个老问题,但我最近遇到了同样的问题。为了从代码中使用sox.c main方法,您需要在调用之后重置所有全局。sox.c打算运行一次,然后退出。为此,您可以添加如下所示的函数。然后您可以重命名main,sox_main_private,基本上可以通过调用sox_main()直接使用命令行调用来构建arv数组。

代码语言:javascript
复制
// reset the globals so that multiple calls can be made to sox_main
static void cleanup_globals(void)
{
    file_count = 0;
    input_count = 0;
    output_count = 0;
    current_input = 0;

    input_wide_samples = 0;
    read_wide_samples = 0;
    output_samples = 0;
    input_eof = sox_false;
    output_eof = sox_false;
    user_abort = sox_false;
    user_skip = sox_false;
    user_restart_eff = sox_false;
    success = 0;

    files = NULL;
    user_efftab = NULL;
    user_efftab_size = 0;
    effects_chain = NULL;
    save_output_eff = NULL;
    user_effargs_size = NULL;  /* array: size of user_effargs for each chain */
    nuser_effects = NULL;  /* array: number of effects in each chain */
    current_eff_chain = 0;
    eff_chain_count = 0;
    very_first_effchain = sox_true;
    effects_filename = NULL;
    play_rate_arg = NULL;
    norm_level = NULL;
}

int sox_main(int argc, char *argv[])
{
#if DEBUG
    printf("sox_main:\n");
    int i = 0;
    while (i < argc) {
        printf("%s ", argv[i]);
        i++;
    }
    printf("\n");
#endif
    sox_main_private(argc, argv);
    cleanup_globals();
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14183120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档