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