FFmpegビデオトランスコーディングの主要なパラメータの詳細な説明

1 固定レート係数 crf (Constant Rate Factor)

Constant Rate Factor (CRF) は、x264 および x265 エンコーダーのデフォルトの品質 (およびレート制御) 設定です。値の範囲は 0 ~ 51 で、値が小さいほど結果の品質が向上し、出力ファイルが大きくなり、値が大きいほど圧縮率が高くなりますが、値が一定に達すると圧縮率が高くなる場合があります。 point 顕著な質量の減少。

  • x264 の場合、通常、値は 18 ~ 28 であり、デフォルト値は 23 です。
  • x265 の場合、デフォルトの CRF 値は 28 です。

CRF 値 +6 はファイル サイズを半分にします。最適なエンコード効果を実現するために、CRF エンコードは主に次のようにオフライン ファイル ストレージで使用されます。

コマンドラインの使用例は次のとおりです。

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

 2 エンコード速度のプリセットを指定する

指定するエンコード速度が遅いほど、得られる圧縮効率は高くなります。値の範囲は次のとおりです。

ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo
  • プラセボは、非常に長いエンコード時間を犠牲にして、veryslow と比較して 1% 改善します。
  • 非常に遅い場合は、遅い場合と比較して 3% 増加しました
  • 遅い場合と比べて遅い場合は 5% 増加しました
  • 低速は中速より 5% ~ 10% 高くなります

3 ビデオフレームレート

3.1 入力フレームレート

フレーム レート (フレーム/秒) は、ビデオによって 1 秒あたりに再生される画像のフレーム数です。人間の目で一貫した動きを見るには、フレーム レートが少なくとも 15fps である必要があります。15fps は 1 秒あたり 15 回リフレッシュすることを意味します。フレームレートは主に 2 つに分類され、1 つはインターレース (インターレースは i と略されます)、もう 1 つはステッピング (プログレッシブは p と略されます) です。

  • インターレース フレーム レート (Interlaced、略して i) は、一般的にテレビ番組で使用されます。NTSC (米国のテレビ規格) は 60i のフレーム レート、つまり 1 秒あたり 60 のインターレース フィールドを使用します (つまり、30 フレーム、2 つのインターレース フィールドが 1 フレームです)。PAL および SECAM 標準では、フレーム レート 50i、つまり 25 フレーム/秒が使用されます。
  • ステッピング フレーム レート (プログレッシブ、p と略記) は通常映画プログラムで使用され、一般的に使用される値には 24p、25p、30p があります。最近、一部の高解像度映画や TV 端末プログラムの 30p では需要を満たすことができなくなり、最新のフレーム レートは通常 50p および 60p になります。

一般的なフレーム レートの使用シナリオを次の表に示します。

フレームレート 説明
24p/23.976p  1920 年から映画業界によって導入された標準フレーム レートは、初期の映画プログラムで頻繁に使用されました。NTSC がこのフレーム レートを採用すると、フレーム レートは 23.976 に低下し、PAL/SECAM がこのフレーム レートを採用すると、フレーム レートは 25fps に増加します。
25ペンス 

25p のフレーム レートは 50i のフレーム レートに簡単に変換できるため、50HZ 電子周波数を使用する国のテレビおよび映画番組の標準フレーム レート。 

30ペンス    デジタル カメラやビデオカメラのフレーム レート、30p のフレーム レートは、ライブ TV 用に 60i に簡単に変換されます。
50i     PAL および SECAM TV 規格の標準フレーム レート
60i/59.94   NTSC規格における標準フレームレート
50p/60p   高品位テレビ (HDTV) の一般的なフレーム レート
48p 新しい提案されたフレームレート
72p  新しい提案されたフレームレート
120p  超高解像度テレビ (UHDTV) で使用されるフレーム レート
ffmpeg -i input.mp4

出力フレームレート fps は次のとおりです。

    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 19999 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 120k tbc (default)

3.2 出力フレームレート

出力ビデオのフレーム レートを設定する場合は、-r オプションを使用する必要があります。以下は、-r オプションを使用して出力ビデオ フレーム レートを 30 fps に設定するコマンドの例です。

ffmpeg -i input.mp4 -r 30 output.mp4

-r オプションを使用して、出力ビデオのフレーム レートを 30 fps に設定します。出力ビデオのファイル名は、output.mp4 です。

Python のサブプロセス モジュールを使用して ffmpeg を呼び出し、コードを通じて出力ビデオ フレーム レートを設定します

import subprocess

input_file = 'input.mp4'
output_file = 'output.mp4'
frame_rate = 30

command = ['ffmpeg', '-i', input_file, '-r', str(frame_rate), output_file]
subprocess.run(command)

4 出力解像度

input.mp4 を解像度 320*240 のビデオ出力に変更します。コマンド例:

	ffmpeg -i input.mp4 -s 320x240 output.mp4 

ビデオ解像度と圧縮サイズのリファレンス 

解決 ビットレート 10分のビデオ
320p 320×240 180kビット/秒 ~13MB
360p 640×360 300kビット/秒 ~22MB
480p 864×480 500キロビット/秒 ~37MB
576p 720x576 850キロビット/秒 ~63MB
720p 960×720 1000キロビット/秒 ~75MB

5 ビデオファイルをGIF画像に変換する

-ss スクリーンショットの開始時間 (秒) スクリーンショットの開始が最後に近づくほど、時間がかかります。
-t スクリーンショットの継続時間 (秒) -ss と -t を省略すると、ビデオ ファイル全体が変換されます。
-私 入力ファイル
-y 古いファイルを上書きする
-s gif画像の幅と高さ
-f 画像フォーマットの生成 省略可能、拡張子変換可能
-r フレームレート ビデオ ファイルの 1 秒あたりのフレーム数

コマンド例:

ffmpeg -ss 5 -t 10 -i input.mp4 -y -s 640x480 -f gif -r 1 output.gif

6 写真からビデオやGIFを作成する

test-001.jpg、test-002.jpg... 連続画像ファイルをビデオと GIF に変換します。

ffmpeg -f image2 -r 1 -i test-%03d.jpg -y output.mp4

ffmpeg -f image2 -r 1 -i test-%03d.jpg -y output.gif

おすすめ

転載: blog.csdn.net/lsb2002/article/details/131400203