我正在尝试将一些 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
您的朋友也是如此。
将来您可能需要检查该工具的手册页。
- 打开终端。
- 输入
man (name of program)
。例如man avconv
。 - 要搜索手册,请按“/”并输入要搜索的字符串。在本例中,我输入了“/compression”,这是找到的第二个东西。