Zel*_*ahl 6 convert aac flac avconv
我正在尝试将一些 aac 文件转换为 flac 文件,因为我使用的其他设备不支持 aac。经过多次尝试寻找解决方案,在互联网上搜索,我终于看到ffmpeg被替换为avconv,并且avconv是ffmpeg的一个分支。所以我搜索了如何使用 avconv 转换为 flac 并找到了这一行:
avconv -i (input file) -f flac (output file path)
Run Code Online (Sandbox Code Playgroud)
这很有效,但是,由于目标设备上的 cpu 资源,我在该命令中没有看到任何 flac 压缩级别,我需要将压缩级别设为 2 或更低。我检查了 avconv 的手册页,但它似乎根本没有提到 flac 压缩级别。
所以我的问题是:如何使用 avconv 从任何输入格式转换为 flac 时指定 flac 压缩级别?
and*_*.46 11
该选项是-compression_level
并且可以使用avconv
或设置FFmpeg
:
ffmpeg -i input.wav -c:a flac -compression_level 12 output.flac
Run Code Online (Sandbox Code Playgroud)
有趣的是,命令行 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);
}
Run Code Online (Sandbox Code Playgroud)
我在相关部分有“箭头”!
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.
Run Code Online (Sandbox Code Playgroud)
现在可用于 FFmpeg 的多个手册页有点令人困惑!
3. 在线文档:
正如“Miso Soup”所指出的,还有一些在线文档可用于更深入的 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.
Run Code Online (Sandbox Code Playgroud)
与手册页相同,但对于某些人来说可能更容易查找和阅读!
参考:
有一个-compression_level
属性。手册页给出的格式为
-compression_level[:stream_specifier] integer (output,audio,video)
Run Code Online (Sandbox Code Playgroud)
您可能不需要指定流,因为文件中只有一个流,您-compression_level 2
的朋友也是如此。
将来您可能需要查看这些工具的手册页。
man (name of program)
。例如man avconv
。