- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 libSoX API 以编程方式转换内存缓冲区中的音频。例如,它可以很好地改变采样率,但在 PCM 和 FLAC 之间转换时我遇到了一些麻烦。
QByteArray inData = [...];
sox_effect_t *e;
char *args[10];
sox_globals.output_message_handler = output_message;
sox_globals.verbosity = 4;
assert(sox_init() == SOX_SUCCESS);
sox_signalinfo_t in_signal_info;
in_signal_info.channels = numChannels;
in_signal_info.length = numSamples * numChannels;
in_signal_info.precision = precision;
in_signal_info.rate = sampleRate;
in_signal_info.mult = NULL;
sox_encodinginfo_t in_encoding_info;
in_encoding_info.bits_per_sample = bitsPerSample;
in_encoding_info.encoding = SOX_ENCODING_SIGN2;
in_encoding_info.reverse_bytes = sox_option_no;
in_encoding_info.reverse_bits = sox_option_no;
in_encoding_info.opposite_endian = sox_false;
in_encoding_info.reverse_nibbles = sox_option_no;
sox_format_t *in =
sox_open_mem_read(inData, inData.size(),
&in_signal_info, &in_encoding_info, "raw");
sox_format_t *out_format = (sox_format_t *)malloc(sizeof(sox_format_t));
memcpy(out_format, in, sizeof(sox_format_t));
out_format->encoding.encoding = SOX_ENCODING_FLAC;
char *outbuffer;
size_t outbuffer_size;
sox_format_t *out = sox_open_memstream_write(&outbuffer, &outbuffer_size,
&out_format->signal,
&out_format->encoding, "flac", NULL);
sox_effects_chain_t *chain =
sox_create_effects_chain(&in->encoding, &out->encoding);
e = sox_create_effect(sox_find_effect("input"));
args[0] = (char *)in;
assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
assert(sox_add_effect(chain, e, &in->signal, &in->signal) == SOX_SUCCESS);
free(e);
e = sox_create_effect(sox_find_effect("output"));
args[0] = (char *)out;
assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
assert(sox_add_effect(chain, e, &in->signal, &out->signal) == SOX_SUCCESS);
free(e);
sox_flow_effects(chain, NULL, NULL);
sox_delete_effects_chain(chain);
sox_close(out);
free(out_format);
free(outbuffer);
sox_close(in);
我得到的输出:
DBUG formats: opening format plugin `lsx_flac_format_fn': library 0x1075ee0, entry point 0x7f3258eee5c0
FAIL formats: can't open output file `': FLAC compression level must be a whole number from 0 to 8
demo_sox: main.cpp:120: int main(int, char **): Assertion `sox_effect_options(e, 1, args) == SOX_SUCCESS' failed.
它失败了:
e = sox_create_effect(sox_find_effect("output"));
args[0] = (char *)out;
assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
几乎没有关于 LibSoX 用法的文档,我做的对吗?
最佳答案
答案是为输出格式指定 FLAC 压缩级别:
out_format->encoding.encoding = SOX_ENCODING_FLAC;
out_format->encoding.compression = 8;
关于c++ - 使用 libsox 将音频转换为 FLAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722523/
我开发了一个简单的应用程序,它使用 libsox(使用 this example)更改音频文件的音高。这是我的代码。它使用 2 个输入参数 - 输入文件路径和输出文件路径: #include #in
我需要打开默认的音频捕获设备并开始录音。 libsox 好像是a nice cross-platform solution .使用二进制前端,我可以 rec test.wav 并激活默认麦克风。 但是
我正在使用多线程应用程序中的音频处理库 libSox。多个线程可以同时调用 libsox 函数。我想知道 libsox 是否是线程安全的,因为我遇到了这个随机崩溃。 最佳答案 不,它不是完全线程安全的
我正在尝试以编程方式对 libSox 应用一些效果,目前我无法理解我是否做对了。例如,我需要应用速度和增益效果,并在缓冲区中读取生成的音频以进行进一步处理。文档真的很稀缺,谷歌搜索也没有用。这是我的代
我想将多 channel (2,8 或 16)wav 文件拆分为其 channel 并将每个 channel 保存在另一个 wav 文件中。 到目前为止,我已经完成了在我的 c++ objective
编辑:我想使用 libsox 以编程方式转换 wav 文件的采样率、音频格式、 channel 等。 在 libsox 手册页中,有很多我可以使用的函数,但我完全不知道该怎么做。任何人都可以给我一些关
我正在尝试使用 libSoX API 以编程方式转换内存缓冲区中的音频。例如,它可以很好地改变采样率,但在 PCM 和 FLAC 之间转换时我遇到了一些麻烦。 QByteArray inData =
我想为 iPhone 设备构建 libsox,但我没有这样做。我只是想知道是否有可能为 iphone 构建这个库.... 最佳答案 einsteinx 已经从我的博客发布了;)但这里又出现了两个链接
我正在尝试使用 Sox 库 C 程序 ( http://sox.sourceforge.net/ ) 将 16KHZ 16 位签名 PCM 编码波形文件转换为 8KHz 8 位 mu 编码波形文件。从
我有一个需要播放 mp3 文件的应用程序。我正在寻找的是 libsox(或任何其他音频库)的某种包装函数。我一直在网上寻找,但没有找到任何可以快速实现的选项。我正在寻找类似的东西; bla=open_
我在 Ubuntu 上使用 libsox 库开发了 C 代码来改变声音文件(3 到 10 秒 ogg 文件)的速度(增加/减少)using following sample code .使用 temp
我正在尝试在 Windows 上使用 LibSoX 混合两个 wav 文件。我可以通过使用以下命令从命令行使用 sox 来完成此操作: sox -m f1.wav f2.wav out.wav 但是我
我的服务器抛出了这个错误 Sox::Error (sox FAIL formats: no handler for file extension `mp3' ) 此人 ( https://superu
我是 libsox 编程的新手,我想从名为“a.wav”的立体声音频中减少一个 channel ,然后使用以下代码生成一个单声道音频“b.wav”: sox_format_t * in, * out;
我正在寻找从已经使用 javax.sound 完成其工作的 Java 应用程序打开/操作 CAF(核心音频格式)文件。有谁知道 libsox 或 libsndfile 的 javax.sound 包装
我是一名优秀的程序员,十分优秀!