使用libsox将音频转换为FLAC

德米特罗·普里利普科(Dmytro Prylipko)

我正在尝试使用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用法的文档,我做对了吗?

德米特罗·普里利普科(Dmytro Prylipko)

答案是为输出格式指定FLAC压缩级别:

out_format->encoding.encoding = SOX_ENCODING_FLAC;
out_format->encoding.compression = 8;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ffmpeg将音频文件转换为FLAC?

来自分类Dev

将DSD音频(.dsf,.dff)转换为Flac

来自分类Dev

使用FFMPEG将FLAC转换为MP3吗?

来自分类Dev

是否有用于将FLAC音频格式转换为音频的好命令行工具?

来自分类Dev

使用ffmpeg,英特尔i5 Kaby Lake硬件将视频和音频转换为VP9和FLAC

来自分类Dev

如何从python将wav转换为flac?

来自分类Dev

无法使用声音转换器将flac文件转换为ogg

来自分类Dev

如何将WAV转换为FLAC,如何将FLAC转换为OGG?

来自分类Dev

如何将WAV转换为FLAC,如何将FLAC转换为OGG?

来自分类Dev

如何使用同步Ajax请求将音频转换为arrayBuffer?

来自分类Dev

ffmpeg:使用ffmpeg将图像/音频转换为视频

来自分类Dev

使用ffmpeg从FLAC到ALAC的无损音频转换

来自分类Dev

Bash脚本使用FFmpeg将所有* flac转换为* .mp3?

来自分类Dev

Bash脚本使用FFmpeg将所有* flac转换为* .mp3?

来自分类Dev

使用ffmpeg将m4a(alac)转换为flac,输出质量较低吗?

来自分类Dev

使用ffmpeg javascript将wav音频文件转换为pcm音频文件

来自分类Dev

使用ffmpeg javascript将wav音频文件转换为pcm音频文件

来自分类Dev

python将视频转换为音频

来自分类Dev

将音频(音乐)转换为音符

来自分类Dev

ios - 将视频的音频转换为 AAC

来自分类Dev

如何将.mp3转换为.flac?

来自分类Dev

将无损m4a转换为flac

来自分类Dev

将FLAC转换为ALAC,保留标签-在脚本中

来自分类Dev

在 Windows 上轻松地将 FLAC 转换为 ALAC?

来自分类Dev

如何在JavaScript或PHP中将WAV音频文件转换为FLAC格式

来自分类Dev

使用libsox更改音频文件的音高而不更改速度

来自分类Dev

使用ffmpeg将flac转换为“立体声mp3”而不是“联合立体声”

来自分类Dev

在 Windows 上维护元数据和目录结构的同时使用 FFmpeg 将 FLAC 递归转换为 MP3

来自分类Dev

ffmpeg从flac转换为WAV

Related 相关文章

  1. 1

    使用ffmpeg将音频文件转换为FLAC?

  2. 2

    将DSD音频(.dsf,.dff)转换为Flac

  3. 3

    使用FFMPEG将FLAC转换为MP3吗?

  4. 4

    是否有用于将FLAC音频格式转换为音频的好命令行工具?

  5. 5

    使用ffmpeg,英特尔i5 Kaby Lake硬件将视频和音频转换为VP9和FLAC

  6. 6

    如何从python将wav转换为flac?

  7. 7

    无法使用声音转换器将flac文件转换为ogg

  8. 8

    如何将WAV转换为FLAC,如何将FLAC转换为OGG?

  9. 9

    如何将WAV转换为FLAC,如何将FLAC转换为OGG?

  10. 10

    如何使用同步Ajax请求将音频转换为arrayBuffer?

  11. 11

    ffmpeg:使用ffmpeg将图像/音频转换为视频

  12. 12

    使用ffmpeg从FLAC到ALAC的无损音频转换

  13. 13

    Bash脚本使用FFmpeg将所有* flac转换为* .mp3?

  14. 14

    Bash脚本使用FFmpeg将所有* flac转换为* .mp3?

  15. 15

    使用ffmpeg将m4a(alac)转换为flac,输出质量较低吗?

  16. 16

    使用ffmpeg javascript将wav音频文件转换为pcm音频文件

  17. 17

    使用ffmpeg javascript将wav音频文件转换为pcm音频文件

  18. 18

    python将视频转换为音频

  19. 19

    将音频(音乐)转换为音符

  20. 20

    ios - 将视频的音频转换为 AAC

  21. 21

    如何将.mp3转换为.flac?

  22. 22

    将无损m4a转换为flac

  23. 23

    将FLAC转换为ALAC,保留标签-在脚本中

  24. 24

    在 Windows 上轻松地将 FLAC 转换为 ALAC?

  25. 25

    如何在JavaScript或PHP中将WAV音频文件转换为FLAC格式

  26. 26

    使用libsox更改音频文件的音高而不更改速度

  27. 27

    使用ffmpeg将flac转换为“立体声mp3”而不是“联合立体声”

  28. 28

    在 Windows 上维护元数据和目录结构的同时使用 FFmpeg 将 FLAC 递归转换为 MP3

  29. 29

    ffmpeg从flac转换为WAV

热门标签

归档