1. ホーム
  2. linux

[解決済み] ffmpeg品質変換オプション(動画圧縮)

2022-02-07 01:59:44

質問事項

へのリンク、または説明をお願いします。 -q:v 1 ffmpeg のビデオ/画像品質と圧縮を扱う引数です。

説明しますと...

for f in *
   do 
     extension="${f##*.}"
     filename="${f%.*}"
     ffmpeg -i "$f" -q:v 1 "$filename"_lq."$extension"
     rm -f "$f"
   done

ffmpegは for 上記のループは、作業ディレクトリ内のすべての画像とビデオを圧縮し、基本的に品質を下げてファイルサイズを小さくします(望ましい結果です)。

私が一番興味があるのは -q:v 1 の引数は、この for ループを使用します。また 1 の中に -q:v 1 引数は、圧縮量を制御するものです。しかし、この値を変更する方法を説明した文書が見当たりません。 1 そして、それが何をするものなのかを説明してください。それはパーセンテージですか?乗数ですか?このツマミはどのように調整するのですか?負の値は使えますか、使えますか?整数のみですか?最小値/最大値は?

でスタートしました。 公式ドキュメント が、ビデオ品質に関するセクションを見つけるのが精一杯で、その上 -q フラグの記述がまばらです。

-frames[:stream_specifier] フレームカウント (出力,ストリーム毎)
フレーム数分のフレームが経過したら、ストリームへの書き込みを停止します。
.
-q[:stream_specifier] q (出力,ストリーム毎)
-qscale[:stream_specifier] q (出力,ストリーム毎)
固定品質スケールを使用する(VBR)。q/qscale の意味はコーデックに依存する。qscale が stream_specifier なしで使用された場合、それはビデオストリームにのみ適用されます。これは、以前の動作との互換性を維持するためで、一般に、オーディオとビデオという 2 つの異なるコーデックに同じコーデック固有の値を指定すると、 stream_specifier を使用しない場合の意図とは異なるためです。

解決方法は?

-q:v はおそらく無視される

MP4で出力しているとのことですので、H.264の映像を出力するエンコーダlibx264を使用している可能性が高いと思われます。

-q:v / -qscale:v は libx264 では無視されます。

コンソール出力では、このことについての警告も表示されます。 -qscale is ignored, -crf is recommended.

の詳細については -crf 参照 FFmpeg Wiki。H.264 .

どのような場合に使用できますか? -q:v ?

MPEG* エンコーダー (mpeg4, mpeg2video, mpeg1video, mjpeg, libxvid, msmpeg4) では、以下のものが使用できます。 -q:v / -qscale:v .

参照 ffmpegでビデオファイルから良質のJPEG画像を取り出すにはどうしたらよいですか? は、このオプションの詳細についてです。