使用している別のデバイスでaacがサポートされていないため、いくつかのaacファイルをflacファイルに変換しようとしています。インターネットを検索して解決策を見つけようと何度か試みた後、最終的にffmpegがavconvに置き換えられ、avconvがffmpegのフォークであることを読みました。そこで、avconvを使用してflacに変換する方法を検索し、次の行を見つけました。
avconv -i (input file) -f flac (output file path)
これはうまく機能しますが、そのコマンドにはflac圧縮レベルが表示されず、ターゲットデバイスのCPUリソースのために、圧縮レベルを2以下にする必要があります。 avconvのマンページをチェックしましたが、flac圧縮レベルについてはまったく言及していないようです。
だから私の質問は次のとおりです:avconvを使用して任意の入力形式からflacに変換するときにflac圧縮レベルを指定するにはどうすればよいですか?
-compression_level
属性があります。マニュアルページの形式は次のとおりです。
-compression_level[:stream_specifier] integer (output,audio,video)
ファイルにはストリームが1つしかないので、おそらくストリームを指定する必要はありません。そのため、-compression_level 2
は友達です。
将来的には、ツールのマニュアルページを確認することをお勧めします。
man (name of program)
と入力します。たとえば、man avconv
。オプションは-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
にも表示されます:)。このmanページには次が表示されます。
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.
複数のmanページが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.
マニュアルページと同じですが、一部の人が見つけて読むのが少し簡単かもしれません!
参照: