使用 avconv 转换时如何指定 flac 压缩级别?

使用 avconv 转换时如何指定 flac 压缩级别?

我正在尝试将一些 aac 文件转换为 flac 文件,因为我使用的其他设备不支持 aac。经过多次尝试寻找解决方案,在互联网上搜索后,我终于看到 ffmpeg 已被 avconv 取代,而 avconv 是 ffmpeg 的一个分支。因此,我搜索了如何使用 avconv 转换为 flac,并找到了以下行:

avconv -i (input file) -f flac (output file path)

这个命令运行良好,但是我没有看到任何 flac 压缩级别,而我需要压缩级别为 2 或更低,因为目标设备上的 CPU 资源有限。我查看了 avconv 的手册页,但似乎根本没有提到 flac 压缩级别。

所以我的问题是:当使用 avconv 从任何输入格式转换为 flac 时,如何指定 flac 压缩级别?

答案1

该选项是-compression_level,可以使用avconv或进行设置FFmpeg

ffmpeg -i input.wav -c:a flac -compression_level 12 output.flac

有趣的是,命令行 flac 编码器提供 0-8 的压缩级别,但 FFmpeg / avconv 提供 0-12。文档可以在 3 个地方看到:

1.源代码:

flac 压缩的选项可以在以下位置看到flacenc.c

/* set compression option defaults based on avctx->compression_level */
if (avctx->compression_level < 0)         <-------------
    s->options.compression_level = 5;     <-------------
else
    s->options.compression_level = avctx->compression_level;

level = s->options.compression_level;
if (level > 12) {                         <-------------
    av_log(avctx, AV_LOG_ERROR, "invalid compression level: %d\n",
           s->options.compression_level);
    return AVERROR(EINVAL);
}

我已在相关部分用“箭头”标记!

2.手册页:

man ffmpeg-all压缩选项也可以在而不是:)中看到man ffmpeg。此手册页显示:

compression_level
Sets the compression level, which chooses defaults for many other options
if they are not set explicitly. Valid values are from 0 to 12, 5 is the default.

FFmpeg 现在有多个手册页,有点令人困惑!

3.在线文档:

正如“味噌汤”指出的那样,一些文档可在线查阅有关 flac 编码的更深层选项,包括压缩选项:

compression_level
Sets the compression level, which chooses defaults for many
other options if they are not set explicitly. Valid values
are from 0 to 12, 5 is the default.

与手册页相同,但对于某些人来说可能更容易找到和阅读!

参考:

答案2

有一个-compression_level属性。手册页给出的格式如下

-compression_level[:stream_specifier] integer (output,audio,video)

您可能不需要指定流,因为文件中只有一个流,-compression_level 2您的朋友也是如此。

将来您可能需要检查该工具的手册页。

  1. 打开终端。
  2. 输入man (name of program)。例如man avconv
  3. 要搜索手册,请按“/”并输入要搜索的字符串。在本例中,我输入了“/compression”,这是找到的第二个东西。

相关内容