gpt4 book ai didi

c++ - 使用 lib sox 处理内存中的音频文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:59 26 4
gpt4 key购买 nike

我正在尝试使用 SOX C++ API 处理内存中的音频文件,但我在一开始就卡住了。目标是从磁盘加载音频文件,在内存中应用一些效果(速度/增益调整)。这是我开始使用的代码,但在创建输出流时收到一个奇怪的错误:

formats: can't open output file `': No such file or directory

这里可能有什么问题?我正在 Mac 上测试它。这是代码:

#include <iostream>
#include <sox.h>
#include <assert.h>

int main() {
sox_format_t * in, *out;
sox_effect_t * e;
sox_init();
in = sox_open_read("/path/to/file.wav", NULL, NULL, NULL);

sox_format_t *out_format = (sox_format_t *)malloc(sizeof(sox_format_t));
memcpy(out_format, in, sizeof(sox_format_t));

char * buffer;
size_t buffer_size;

out = sox_open_memstream_write(&buffer, &buffer_size, &in->signal, NULL, "sox", NULL);
//chain = sox_create_effects_chain(&in->encoding, &out->encoding);

//e = sox_create_effect(sox_find_effect("input"));
return 0;
}

最佳答案

sox_open_memstream_write() 根据您传递的参数使用 fmemopen() 或 open_memstream()。

某些(或所有)OSX 版本没有这些功能。

Windows 也是如此。

你可以在文件src/formats.c中找到相关代码,函数open_write(),寻找#ifdef HAVE_FMEMOPEN条件。

关于c++ - 使用 lib sox 处理内存中的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51021627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com